2017-11-10 8 views
0

これを見てみましたが、私はまだVBAを初めて使っていて、かなり混乱しています。 1つのサブ変数から変数を取得し、別のサブ変数で使用する方法を理解できません。Module内のsubから変数を取ってExcel VBAを使ったUserFormの別のSubで使用する方法

変数ListBox1ItemsGetListBox1Itemsから、cbSave_Clickに使用したいとします。 Set oNewRow = Selection.ListObject.ListRows.Add(1)にエラーが表示され続けます。私はDim ListBox1Items As StringPublic ListBox1Items As Stringを試しましたが、それは役に立ちません。

サブモジュールのモジュールの位置はありますか? GetListBox1Itemsはモジュール内にあります。 cbSave_Clickはユーザーフォームにあります。

タイプを使用して検索しましたが、混乱します。

Private Sub cbSave_Click() 
Dim oNewRow As ListRow 
Dim rng As Range 
Set rng = ThisWorkbook.Worksheets("Creatures").Range("MonsterList") 
Set oNewRow = Selection.ListObject.ListRows.Add(1) 


With ws 

Call GetListBox1 

oNewRow.Range.Cells(1, 24).Value = Me.StatBox1.Value 
oNewRow.Range.Cells(1, 35).Value = ListBox1Items 

End With 
End Sub 

とGetListBox1が続く抽象例取る

Sub GetListBox1() 
Dim SelectedItems As String 
Dim ListBox1Items As String 


With MonsterMaker 
    For i = 0 To .ListBox1.ListCount - 1 
     If .ListBox1.Selected(i) = True Then 
      SelectedItems = SelectedItems & .ListBox1.List(i) & ", " 
     End If 
    Next i 

    ListBox1Items = Left(SelectedItems, Len(SelectedItems) - 2) 


End With 
End Sub 
+0

グローバル変数にする必要があります。いくつかのポインタhttps://stackoverflow.com/questions/2722146/how-do-i-declare-a-global-variable-in-vba – QHarr

+0

GetListBox1をListBox1Itemsの値を返す関数にすることができます – mooseman

+0

グローバル変数を設定しようとしましたユーザーフォームとモジュールで、しかし 'Set oNewRow = Selection.ListObject.ListRows.Add(1)'でまだエラーが発生しています。 – bigbucky

答えて

0

ある:

標準モジュールコード:ユーザーフォームのコードで

Option Explicit 
Public ListBoxItems As String 'GLOBAL 

Sub GetListBoxItems() 

    Dim selectedItems As String 
    Dim i as long 

    With ThisWorkBook.Worksheets("Sheet1").OLEObjects("ListBox1").Object 'amend as appropriate 
     For i = 0 to .ListCount-1 
      If .Selected(i) Then 
       selectedItems = selectedItems & .List(i) & ", " 
      End If 
     Next i 
     ListBoxItems = Left$(selectedItems,Len(selectedItems)-2) 
    End With 

End Sub 

Private Sub cbSave_Click() 
    Call GetListBoxItems 
    Debug.Print ListBoxItems 
End Sub 
+0

動作させることができませんでした。 'Set oNewRow = Selection.ListObject.ListRows.Add(1)'でエラーが発生しました – bigbucky

+0

左後の$は何ですか?私はそれが文書化されて見つけることができませんでした。 – bigbucky

+0

この例は、変数を渡す方法を示す抽象的なものでしたか?私はMonsterMakerがどのようなものなのか分かりません。そして、次の構文は正しいですか? Selection.ListObject.ListRows.Add(1) – QHarr

関連する問題