[英]Macro - Copy CERTAIN Cells in Same Row, Triggered by a Checkbox, to Different Worksheet
需要一些幫助。 我有一個模板,可以將數據從不同的程序導出到其中。 數據行因導出而異,每次導出都需要一個新工作簿。
我目前編寫了一個“主”宏,用於清理工作表(格式、文本到數字等),並在包含數據的每一行的末尾添加復選框。 這些復選框鏈接到一個單元格。 操作員完成工作表后,他們將需要選中“超出規格”的每一行數據的復選框。 然后這些行將被復制到工作簿中的下一張紙上。 這是由一個按鈕觸發的。 當我只想復制“A”到“I”列中的單元格時,我當前的宏可以復制整行數據。 列“J”和列中的單元格包含不需要復制的數據。
這是我當前的宏,就像我說的,復制整行:
Sub CopyRows()
Dim LRow As Long, ChkBx As CheckBox, WS2 As Worksheet
Set WS2 = Worksheets("T2 FAIR (Single Cavity)")
LRow = WS2.Range("A" & Rows.Count).End(xlUp).Row
For Each ChkBx In ActiveSheet.CheckBoxes
If ChkBx.Value = 1 Then
LRow = LRow + 1
WS2.Cells(LRow, "A").Resize(, 14) = Range("A" & _
ChkBx.TopLeftCell.Row).Resize(, 14).Value
End If
Next
End Sub
在等式的右側,您的Range()
對象未正確限定(使用工作表)。 所以,我在這個例子中使用了假的wsX
。
另外,我使用了“D”的結尾列 - 但您可以更改為您需要的任何內容。
LRow = LRow + 1
r = ChkBx.TopLeftCell.Row
ws2.Range(ws2.Cells(LRow, "A"), ws2.Cells(LRow, "D")) = wsX.Range( _
wsX.Cells(r, "A"), wsX.Cells(r, "D"))
或者
ws2.Range("A" & LRow & ":D" & LRow) = wsX.Range("A" & r & ":D" & r)
來自評論:模板總是從“A19”中導入的數據開始。 當我運行此宏時,要將選中的數據復制到下一個工作表,它以單元格“A18”開頭。 我不知道為什么。 如何指定要在下一個工作表上以“A19”開頭復制選中的數據?
如果它總是
LRow
一個,你可以只加 1。我不確定你的布局如何,所以這將是你必須添加到LRow
或r
。 所以要么ws2.Range("A" & LRow + 1 & ":D" & LRow + 1) = ...
或者
... = wsX.Range("A" & r + 1 & ":D" & r + 1)
答案如下:
Sub CopyRows()
Dim ws1 As Worksheet
Set ws1 = Worksheets("T1 FAIR (Single Cavity)")
Dim ws2 As Worksheet
Set ws2 = Worksheets("T2 FAIR (Single Cavity)")
Dim LRow As Long
LRow = ws2.Range("A" & rows.count).End(xlUp).row
Dim r As Long
Dim ChkBx As CheckBox
For Each ChkBx In ws1.CheckBoxes
If ChkBx.value = 1 Then
LRow = LRow + 1
r = ChkBx.TopLeftCell.row
ws2.Range("A" & LRow + 1 & ":I" & LRow + 1).value = _
ws1.Range("A" & r & ":I" & r + 1).value
End If
Next
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.