2017-09-28 5 views
1

VBAを使用して1つのブックから別のブックに列をコピーするために、関数(CommandButton2_Click)にグローバル変数(cmb)を使用します。 これは私のコードです:変数「コ​​ンパイルエラー:ステートメントが型ブロック外で無効です」

Dim wb As Workbook 
Dim cmb As String 

Private Sub ComboBox1_Change() 
    Cell As Range, rng As Range, sht As Worksheet 
    Set cmb = Form.ComboBox1.Value 
    Set sht = wb.Worksheets(cmb) 
    'assuming your headers are always on the first row... 
    Set rng = sht.Range(sht.Range("A1"), _ 
         sht.Cells(1, Columns.Count).End(xlToLeft)) 

    'add some code here to clear the lists first!... 
    For Each Cell In rng.Cells 
     If Len(Cell.Value) > 0 Then 
      Form.ComboBox2.AddItem (Cell.Value) 
      Form.ComboBox3.AddItem (Cell.Value) 
      Form.ComboBox4.AddItem (Cell.Value) 
      Form.ComboBox5.AddItem (Cell.Value) 
      Form.ComboBox6.AddItem (Cell.Value) 
      Form.ComboBox7.AddItem (Cell.Value) 
      Form.ComboBox8.AddItem (Cell.Value) 
      Form.ComboBox9.AddItem (Cell.Value) 
      Form.ComboBox10.AddItem (Cell.Value) 
      Form.ComboBox11.AddItem (Cell.Value) 
      Form.ComboBox12.AddItem (Cell.Value) 
      Form.ComboBox13.AddItem (Cell.Value) 
     End If 
    Next Cell 
End Sub 


Private Sub CommandButton1_Click() 
    Dim sFilePath As String 
    sFilePath = Application.GetOpenFilename() 
    Set wb = Workbooks.Open(sFilePath) 
    For Each sht In wb.Worksheets 
      Form.ComboBox1.AddItem sht.Name 
    Next sht 
End Sub 


Private Sub CommandButton2_Click() 
    'Copy Column from one workbook to another 
    Dim sourceColumn As Range, targetColumn As Range 
    Set sourceColumn = wb.Worksheets(cmb).Columns(Form.ComboBox2.Value) 
    Set targetColumn = ActiveWorkbook.ActiveSheet.Columns("PART NUMBER") 
    sourceColumn.Copy Destination:=targetColumn 
End Sub 

私はPrivate Sub ComboBox1_Change()Compile Error: Statement invalid outside Type Blockエラーを取得しています。私はなぜ思ったのだろう。変数cmbをグローバルとして宣言しました。変数が有効範​​囲にないのはなぜですか?

+0

あなたはWB '設定し、WB = Workbooks.Open(sFilePath)'あなたはまたない – danieltakeshi

+2

'set'を設定されていません文字列変数 'Set cmb = ..'は' cmb = ... 'のみでなければなりません –

+2

そして' Cell As Range、rng As Range、sht As Worksheet'にキーワード 'Dim'がありません –

答えて

1

私はそれがために持っていると信じて:

Public wb as Workbook 
Public cmb as String 

と:

Private Sub ComboBox1_Change() 
Dim Cell As Range, rng As Range, sht As Worksheet 
+0

私はその変更を加え、Set sourceColumn = wb.Worksheets(cmb).Columns(Form.ComboBox2.Value)でエラー( 'Run Time Error 13:Type Mismatch')を投げます。これは何ができますか? – user248884

+0

@ user248884私は知っている:それは別の完全に無関係な質問* - これを受け入れられたとしてマーク(中空の緑色のチェックマークをクリック)と新しい投稿に新しいエラーについての具体的な[mcve]を投稿する。 –

+1

@ user248884 Excel VBAの変数に列を割り当てることをGoogleに依頼し、問題がある場合は質問してください。 –

関連する問題