复制包含空白的列而不跳过行..将 "blanks" 留空 VBA
Copying columns including blanks without skipping rows..leave "blanks" blank VBA
Aplication Defined error 复制指定的列和范围,包括带有嵌入按钮的空白 运行 多个宏。我知道所有行都将填入 A 列,所以如果我可以将其余宏引用到 A.end
我看过 Google youtube 和这里虽然有很多关于复制和粘贴的信息,但我找不到适用于这个 运行 多个宏的信息。
宏 5 和 6 是我开始遇到问题的地方,因为这些列在整个过程中都有多个空白。
要复制的原始数据:
目的地:
私人订阅 CommandButton1_Click()
Worksheets("Sheet1").Range("a2", Range("a2").End(xlDown)).Copy _
Worksheets("Sheet2").Range("a2") 'macro1
Worksheets("Sheet1").Range("d2", Range("d2").End(xlDown)).Copy _
Worksheets("Sheet2").Range("b2") 'Macro2
Worksheets("Sheet1").Range("c2", Range("c2").End(xlDown)).Copy _
Worksheets("Sheet2").Range("c2") 'macro3
Worksheets("Sheet1").Range("g2", Range("g2").End(xlDown)).Copy _
Worksheets("Sheet2").Range("d2") 'macro4
If Worksheets("Sheet1").Range("e2", Range("e2").End(xlDown)).Value = "<0" Then
Worksheets("Sheet2").Range("i2").Copy 'macro5
If Worksheets("Sheet1").Range("e2", Range("e2").End(xlDown)).Value = ">0" Then
Worksheets("Sheet2").Range("j2").Copy 'macro6
Worksheets("Sheet2").Activate 'macro7
Range.end(xldown)
只会让您获得一个连续的范围(实际上它会停在第一个空白单元格处)。
由于您想要包含空白,您可能想要从工作表的最后一行开始工作,直到该列中遇到的第一个非空白单元格(这是获取最后一行的一种方式)。
这意味着:
' If you are new to With statements (below), any objects within the With block that begin with a . relate to "Sheet1". Saves us typing Sheet1 repeatedly, and makes sense to use it since we access a lot of Sheet1's members like range/cells/rows
With Worksheets("Sheet1")
.Range("a2", .cells(.rows.count, "A").End(xlup)).Copy Worksheets("Sheet2").Range("a2") 'macro1
End with
未经测试,在移动设备上编写 -- 但希望它有效或能让您更接近解决方案。您需要复制粘贴上面的内容并将 A
更改为 B、C、D、E 等。我不太确定您要通过宏中的“<0”条件实现什么5 和 6.
(最好将代码转换为参数化的 Sub
并仅提供列 letter/number 作为子参数,但这取决于您对 VBA 和一般编程 - 暂时是您更容易 understand/maintain。)
关于宏 5 和 6 的编辑
With Worksheets("Sheet1")
Dim cell as range
For each cell in .Range("E2", .Cells(.Rows.Count, "E").End(xlUp))
If cell.Value <= 0 Then 'Get rid of the equal sign if you don't want it in your logic/condition'
Cell.Copy Worksheets("Sheet2").cells(cell.row, "I") 'Macro5
ElseIf cell.value > 0 Then
Cell.Copy Worksheets("Sheet2").cells(cell.row, "J") 'Macro6
End If
Next cell
End With
Worksheets("Sheet2").Activate 'macro7
Aplication Defined error 复制指定的列和范围,包括带有嵌入按钮的空白 运行 多个宏。我知道所有行都将填入 A 列,所以如果我可以将其余宏引用到 A.end
我看过 Google youtube 和这里虽然有很多关于复制和粘贴的信息,但我找不到适用于这个 运行 多个宏的信息。
宏 5 和 6 是我开始遇到问题的地方,因为这些列在整个过程中都有多个空白。
要复制的原始数据:
目的地:
私人订阅 CommandButton1_Click()
Worksheets("Sheet1").Range("a2", Range("a2").End(xlDown)).Copy _
Worksheets("Sheet2").Range("a2") 'macro1
Worksheets("Sheet1").Range("d2", Range("d2").End(xlDown)).Copy _
Worksheets("Sheet2").Range("b2") 'Macro2
Worksheets("Sheet1").Range("c2", Range("c2").End(xlDown)).Copy _
Worksheets("Sheet2").Range("c2") 'macro3
Worksheets("Sheet1").Range("g2", Range("g2").End(xlDown)).Copy _
Worksheets("Sheet2").Range("d2") 'macro4
If Worksheets("Sheet1").Range("e2", Range("e2").End(xlDown)).Value = "<0" Then
Worksheets("Sheet2").Range("i2").Copy 'macro5
If Worksheets("Sheet1").Range("e2", Range("e2").End(xlDown)).Value = ">0" Then
Worksheets("Sheet2").Range("j2").Copy 'macro6
Worksheets("Sheet2").Activate 'macro7
Range.end(xldown)
只会让您获得一个连续的范围(实际上它会停在第一个空白单元格处)。
由于您想要包含空白,您可能想要从工作表的最后一行开始工作,直到该列中遇到的第一个非空白单元格(这是获取最后一行的一种方式)。
这意味着:
' If you are new to With statements (below), any objects within the With block that begin with a . relate to "Sheet1". Saves us typing Sheet1 repeatedly, and makes sense to use it since we access a lot of Sheet1's members like range/cells/rows
With Worksheets("Sheet1")
.Range("a2", .cells(.rows.count, "A").End(xlup)).Copy Worksheets("Sheet2").Range("a2") 'macro1
End with
未经测试,在移动设备上编写 -- 但希望它有效或能让您更接近解决方案。您需要复制粘贴上面的内容并将 A
更改为 B、C、D、E 等。我不太确定您要通过宏中的“<0”条件实现什么5 和 6.
(最好将代码转换为参数化的 Sub
并仅提供列 letter/number 作为子参数,但这取决于您对 VBA 和一般编程 - 暂时是您更容易 understand/maintain。)
关于宏 5 和 6 的编辑
With Worksheets("Sheet1")
Dim cell as range
For each cell in .Range("E2", .Cells(.Rows.Count, "E").End(xlUp))
If cell.Value <= 0 Then 'Get rid of the equal sign if you don't want it in your logic/condition'
Cell.Copy Worksheets("Sheet2").cells(cell.row, "I") 'Macro5
ElseIf cell.value > 0 Then
Cell.Copy Worksheets("Sheet2").cells(cell.row, "J") 'Macro6
End If
Next cell
End With
Worksheets("Sheet2").Activate 'macro7