2017-03-07 57 views
0

我希望能夠按下一個按鈕將一些數據從工作表「數據輸入」複製到第一個空白在另一張表「數據庫」中排。僅當第一列不是空白時(數據量變化),才能將數據複製到另一個工作表中的第一個空白行

但是,如果第一列是空白的,我不希望該行數據被複制。此外,有時「數據輸入」表可能有4行數據,有時可能有5,6,7或8.

我附上了下面的截圖。

我到目前爲止使用的代碼沒有給出任何錯誤,但似乎也沒有發生任何錯誤。

Private Sub CommandButton1_Click() 

    Dim cl As Range  
    For Each cl In Sheet2.Range("A8:A23") 

     If Not IsEmpty(ActiveCell.Value) Then 

      Range("A" & ActiveCell.Row & ":R" & ActiveCell.Row).Select 
      Selection.Copy 
      Sheets("Database").Select 
      ActiveCell.End(xlDown).Offset(1, 0).Select 
      ActiveSheet.Paste 

     End If  
    Next cl 
End Sub 

image2 image3

+0

嘗試並[避免使用'.Select' /'.Activate'](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-宏),因爲這可能會導致意想不到的問題。如果你用'F8'逐步執行代碼,什麼都不會發生?它是否跳過任何​​行,等等? – BruceWayne

回答

0

您當前的代碼被不斷提及ActiveCell(其中,第一次迭代[如果它得到了遠],是在「數據庫」工作表單元格後!),而不是Sheet2範圍A8:A23中的單元格。

重構的代碼可能是:

Private Sub CommandButton1_Click() 
    Dim cl As Range 

    For Each cl In Sheet2.Range("A8:A23") 
     If Not IsEmpty(cl.Value) Then 
      With Worksheets("Database") ' to make it easier to refer to the sheet 
       'Find last cell in column A, 
       ' go to the row below, 
       ' extend the range to be 18 columns wide, 
       ' set values to be values on Sheet2 
       .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(1, 18).Value = cl.Resize(1, 18).Value 
      End With 
     End If 
    Next 
End Sub 
0

我會做一些簡單的像這樣。這可能不像其他一些方法那樣高效,但它應該做你想做的事情。此外,範圍不會被硬編碼,並會隨着數據行數的變化而改變。

Dim lastRowDataEntry As Integer 
Dim lastRowDatabase As Integer 
Dim a As Integer 

'Find the last row of data in each sheet 
lastRowDataEntry = Sheets("Data Entry").Range("B" & Rows.Count).End(xlUp).Offset(0).Row 


For a = 8 To lastRowDataEntry 
    If IsEmplty(Sheets("Data Entry").Cells(a, "A").Value) = True Then GoTo ReadyForNexta 
    Row(a).Select 
    Selection.Copy 
    lastRowDataBase = Sheets("Database").Range("A" & Rows.Count).End(xlUp).Offset(0).Row 
    Sheets("Database").Cells(lastRowDatabase, "A").Select 
    ActiveSheet.Paste 

ReadyForNexta: 

Next a 
相關問題