-1

質問があります。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(mail_list).DataBodyRange.Copy など) の ListObjects を調べて、これを機能させるにはどうすればよいですか?

4

1 に答える 1

-1

と思いました

Dim mail_list, subject As String 
=
Dim mail_list as string
Dim subject as string

... しかたがない...

とにかく、名前付きリストをテーブル型リストに変更したところ、このコードは機能しています。しかし、私は定義されたリストをたくさん持っています(つまり、Name Managerのこの他のタイプ-その説明で申し訳ありませんが、このリストタイプが英語版のExcelでどのように命名されているかわかりません...名前付き範囲ですか?)これを使用したいタイプ。問題は、名前付き範囲を別のシートにコピーする方法です...

于 2015-07-20T16:05:00.380 に答える