0

私の現在のコードは Workbook_Open イベントを使用して、ユーザーが何をしたいのかを尋ねるユーザーフォームを実行します。ユーザーが「A」を選択すると、開いているすべての workbooks.name(s) を表示するリストボックスがユーザーフォームに入力されます。ListBox_DblClick イベントを使用して、ユーザーがアクティブにしたいワークブックの名前をダブルクリックして、1 つのシート (一時フォルダーにエクスポートされるワークブック) から情報をコピーするタスクを実行できるようにします。ほぼ不可能な命名システム) を、名前と場所がわかっているワークブックに変換します。ダブルクリックイベントの後にリストボックスの値を呼び出すことができないようです。ポインタはありますか?

Userform2 内のコード:

Option Explicit
Public Vval As String
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Vval = Me.ListBox1.Value
Call AUTOMATEME
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim wkb As Workbook
With Me.ListBox1
    For Each wkb In Application.Workbooks
        .AddItem wkb.Name
    Next wkb
End With
End Sub

ダブルクリックイベントが呼び出すサブ(私が問題を抱えているもの)は次のとおりです。

Sub AUTOMATEME()

With Listbox1.Value
Worksheets("MYDATA").Range("D2:D103").Select
Selection.Copy
Workbooks("ALL_Data.xlsm").Worksheets("FORMULAS").Select
Range("G2").Select
ActiveSheet.Paste
Sheets("FORMULAS").Select
ListBox1.Value.Select
Range("E2:E103").Select
Selection.Copy
Workbooks("ALL_Data.xlsm").Worksheets("FORMULAS").Select
Range("G2").Select
Range("E2").Select
ActiveSheet.Paste
End With
End Sub

助けてくれてありがとう!

4

1 に答える 1

1

まず、DblClick イベントで割り当てたパブリック変数 vVal を使用する必要があります。パブリック変数は持続しますが、ユーザーフォームの値は持続しません。

次に、値がワークブックであることを VBA に伝える必要があります。Workbooks(vVal)

最後に、 の内部ではWith、オブジェクトに対してのみアクションを実行する必要がありWithます。

したがって、MYDATA が vVal ワークブックのワークシートである場合:

With Workbooks(vVal)
   .Worksheets("MYDATA").Range("D2:D103").Select
End With

ワークシートの前にあるピリオドに注意してください

于 2015-04-08T18:33:48.407 に答える