2017-06-14 17 views
0

工作表1中單元格中的數據(A2:C4)列D中的簡單表格爲空。我想選擇整行,將它剪切並粘貼到sheet2中,當時間被添加到列表D中。 當我單擊註銷按鈕時,它將在列D中添加一個時間打孔。 我希望整行是選中,然後剪切並粘貼到sheet2中。 我還想安排剩餘的條目向上移動,以便兩者之間沒有空格。如何從工作表1中選擇和切割整行並將其粘貼到工作表2中

Screenshot

Dim CM As Boolean 

Private Sub cmdMove_Click() 

Dim myLog As Worksheet 
Dim myLogSheet As Range 
Dim i As Long: i = 1 

Set myLog = Sheets("Sheet1") 
Set myLogSheet = myLog.Range("B:B").Find(txtID.Value, , , xlWhole) 

'Dim LastRow As Long 
'LastRow = Sheets("Sheet2").Range("A65536").End(xlUp).Row + 1 
If Not myLogSheet Is Nothing Then 
myLogSheet.Offset(0, 2) = Format(Now, "hh:mm:ss") 

With ActiveSheet 
For n = nLastRow To nFirstRow Step -1 
     If .Cells(n, "D") = "" Then 
      .Cells(n, "D").EntireRow.Cut Sheet2.Cells(i, "A") 
      .Cells(n, "D").EntireRow.Delete '~~> if you want to delete 
      i = i + 1 
     End If 
    Next 
End With 


Else 
txtName.Value = "NO RECORD" 

End If 


End Sub 
+0

什麼問題? –

+0

如果我選擇ID,它會顯示相應的名稱,這是正確的。如果我點擊按鈕,時間打孔將顯示在D列中。我想將整行移動到sheeet2(表明該員工已經註銷)。 –

回答

0

您需要刪除你的循環,只是用你發現使用Find行:

Dim CM As Boolean 

Private Sub cmdMove_Click() 

    Dim myLog As Worksheet 
    Dim myLogSheet As Range 
    Dim myLogSheetRow As Long 
    Dim i As Long 
    i = 1 
    'Probably you want: 
    i = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row + 1 

    Set myLog = Sheets("Sheet1") 
    Set myLogSheet = myLog.Range("B:B").Find(txtID.Value, , , xlWhole) 

    If Not myLogSheet Is Nothing Then 
     myLogSheetRow = myLogSheet.Row ' So we can delete the row later 
     myLogSheet.Offset(0, 2) = Format(Now, "hh:mm:ss") 
     myLogSheet.EntireRow.Cut Sheet2.Cells(i, "A") 
     myLog.Rows(myLogSheetRow).Delete 
    Else 
     txtName.Value = "NO RECORD" 
    End If 
End Sub 

請注意Excel展覽後刪除行時非常古怪的行爲Cut。在Cut之後使用之後的語句myLogSheet.EntireRow.Delete會導致Excel根據Sheet2中單元格的新位置刪除Sheet1中的行。這就是爲什麼需要創建一個變量來引用Cut之前的行,以便它可以在Cut之後的Delete中使用。

+0

讓我們[在聊天中繼續討論](http://chat.stackoverflow.com/rooms/146981/discussion-between-yowe3k-and-bamboo-likefox)。 – YowE3K

相關問題