2017-02-10 7 views
-1

選択した行を複数列の複数選択リストボックスから自分のシートにコピーするコードが見つかりました。最初に選択した行をコピーする場所をセルに設定するにはどうすればよいですか?セルを選択してデータをコピー

Excelの列は変更できますが、行は変更できません。それは、常に「行をループ」の責任変数はLbcopyで、(たとえばA1またはB1のための)最初のあなたのコードで

Dim Litem As Long, LbRows As Long, LbCols As Long 
Dim bu As Boolean 
Dim Lbloop As Long, Lbcopy As Long 
Dim m As Variant 

LbRows = ListBox2.ListCount - 1 
LbCols = ListBox2.ColumnCount - 1 

For Litem = 0 To LbRows 
    If ListBox2.Selected(Litem) = True Then 
     bu = True 
     Exit For 
    End If 
Next 

If bu = True Then 
    With ActiveSheet.Range(sCell).End(xlUp)   'sCell is the selected Cell 

     For Litem = 0 To LbRows 
      If ListBox2.Selected(Litem) = True Then 'Row selected 
       'Increment variable for row transfer range 
       Lbcopy = Lbcopy + 1 
       For Lbloop = 0 To LbCols 
        'Transfer selected row to relevant row of transfer range 
        .Cells(Lbcopy, Lbloop + 1) = ListBox2.List(Litem, Lbloop) 

       Next Lbloop 
      End If 
     Next 
     For m = 0 To LbCols 
      With ActiveSheet.Range(sCell).End(xlUp) 
      End With 
     Next 
    End With 
Else 
    MsgBox "Nichts ausgewählt", vbCritical 
End If 
+2

こんにちは、スタックオーバーフローを歓迎:開始行を決定する

一つの方法は、このように、For Litem = 0 To LbRows前に変数の初期値を割り当てることです。あなた自身でコードを読んで理解し、ここに質問を投稿する前にあなた自身で変更を行いましたか?もしそうなら、あなたはなぜ成功できなかったのですか?それをやろうとしたときに何が起こったのですか? –

+0

こんにちは、はい、私はそれを理解しようとしており、すべてそれを変更しました。選択した行がコピーされる範囲を変更しましたが、これは行ではなくシートの列にのみ影響します。行がどこに定義されているのか分かりません。私はVBAの方がやや新しいです。 – Morris

+1

'Lbcopy'は、あなたがもっとよく見てみるべき変数です。 –

答えて

0

で起動します。あなたは正しく、コードの先頭で変数を宣言しているが、あなたは変数を初めて使用するときは、ここにある:この時点で

'Increment variable for row transfer range 
Lbcopy = Lbcopy + 1 

、あなたが割り当てられていないため、変数の値が0ですそれに対するいかなる価値もあります。
これは、最初にForループに入るとき、あなたはおおよそLbcopy = 0 + 1と言っています。

Lbcopy = 9  ' <--- will start copying from row 10 
For Litem = 0 To LbRows 
    If ListBox2.Selected(Litem) = True Then 'Row selected 
     'Increment variable for row transfer range 
     Lbcopy = Lbcopy + 1 ' <-- will turn the value of first iteration to 10 
     For Lbloop = 0 To LbCols 
      'Transfer selected row to relevant row of transfer range 
      .Cells(Lbcopy, Lbloop + 1) = ListBox2.List(Litem, Lbloop) 

     Next Lbloop 
    End If 
Next 
+0

ありがとう、私は自分のニーズにコードを変更することができました。 – Morris

関連する問題