2017-02-10 1 views
-1

이 코드는 다중 열 다중 선택 목록 상자에서 선택한 시트를 내 시트로 복사하는 코드입니다. 첫 번째로 선택한 행을 복사해야하는 셀을 어떻게 설정할 수 있습니까?데이터를 복사 할 셀을 선택하십시오.

Excel 열은 변경할 수 있지만 행은 변경할 수 없습니다. 그것은 항상 첫 번째 (예 : 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

안녕하세요 스택 오버플로에 오신 것을 환영합니다. 자신의 코드를 읽고 이해하려고 시도 했습니까? 여기에 질문을 게시하기 전에 혼자서 변경하십시오. 그렇다면 왜 성공하지 못했습니까? 네가하려고했을 때 무슨 일이 있었 니? –

+0

안녕하세요, 네, 이해하려고 노력했지만 이미 수정했습니다. 선택한 행이 복사되는 범위가 변경되었지만 행의 시트 열에 만 영향을 미쳤습니다. 행이 정의 된 곳을 모르겠습니다. 나는 오히려 vba에 익숙하지 않고 오전 내 한계에 빨리 뻗어 있습니다. – Morris

+1

'Lbcopy'는 더 자세히보아야 할 변수입니다. –

답변

0

, Lbcopy이다 "행을 통해 반복"에 대한 변수 책임에서 시작됩니다. 당신은 정확하게 코드의 시작 부분에 변수를 선언하고 있지만 혹시 변수를 사용하여 처음으로 여기에 있습니다 : 당신이 할당되지 않았기 때문에

이 시점에서
'Increment variable for row transfer range 
Lbcopy = Lbcopy + 1 

, 변수의 값은 0입니다 그것에 어떤 가치.
처음으로 For 루프를 시작하면 대략 Lbcopy = 0 + 1이라고 말합니다. 시작 행을 결정

한 가지 방법은이처럼 For Litem = 0 To LbRows하기 전에 변수의 초기 값을 할당하는 것입니다 :

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

관련 문제