我有一個問題想複製特定名單,有在VBA一個不錯的功能,具體名單複製到另一個工作表:如何使用VBA
Sheets("Data").ListObjects("mail_list").DataBodyRange.Copy
Sheets("Email").Range("B2").PasteSpecial xlPasteValues
而且我想用具體名單取決於是什麼樣的文本電池,就像這樣:
Sub make_email()
Dim mail_list, subject As String
Dim i As Integer
i = 2
subject = Sheets("Form").Cells(7, 2).Text
Do While Sheets("Data").Cells(i, 4).Text <> ""
If subject = Sheets("Data").Cells(i, "AW") Then
mail_list = Cstr(Sheets("Data").Cells(i, "AW"))
Exit Do
End If
i = i + 1
Loop
Sheets("Data").ListObjects(mail_list).DataBodyRange.Copy
Sheets("Email").Range("B2").PasteSpecial xlPasteValues
End Sub
我認爲ListObjects需要串採取具體名單,但沒有,程序返回的錯誤超出範圍。如何查看特定名稱的ListObjects(例如.ListObjects(mail_list).DataBodyRange.Copy)並使其正常工作?
我不確定這個問題很重要,但是您需要在「Dim mail_list」聲明中包含「As String」。您當前的代碼將其聲明爲「變體」。看到這個[Chip Pearson頁面](http://www.cpearson.com/excel/declaringvariables.aspx)並向下滾動到「注意用一個聲明聲明的變量」。 –
你想用ListObjects做什麼?您的最終解決方案是基於B7中的文本複製某些行? 另外,正如@DougGlancy提到的那樣,您的Dim語句應該是'Dim mail_List as String,subject as String'。直覺地反駁一下,你現在擁有的是'Dim mail_list',它沒有任何類型,所以默認的Excel將它設置爲我相信的變體。你最好明確說明類型。不幸的是,你不能將變量串在一起,並在最後設置類型。每個變量都應該被賦予一個類型。 – BruceWayne