我需要一些帮助来选择 vba 中的范围
I Want some help in selecting ranges in vba
Range("B2:C2").Select
Selection.Copy
Range("J2").Select
Selection.End(xlDown).Select
Range("B82706:C82706").Select
Range("C82706").Activate
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Columns("B:C").Select
Range("B82695").Activate
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
在这种情况下,B82706 和 c82706 行号可能不同
所以,而不是这个,我必须 select 基于最后 J 列的 B&C 列(直到结束数据)
请帮助我,提前致谢
没有看到你的数据,我不确定这是否正确,但它应该看起来像这样:
- 在 J 列中找到最后使用的行(这是您粘贴的结尾)。
- 在 B 列中找到最后使用的行(这是您粘贴的开头)。
- Copy/paste
- 将公式转换为数值
Option Explicit
Public Sub Example()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'define your worksheet name here
Dim LastRowInJ As Long 'find last used row in column J
LastRowInJ = ws.Cells(ws.Rows.Count, "J").End(xlUp).Row
Dim LastRowInB As Long 'find last used row in column B
LastRowInB = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
ws.Range("B2:C2").Copy Destination:=ws.Range("B" & LastRowInB, "C" & LastRowInJ)
Application.CutCopyMode = False
'turn formulas into values in column B and C
ws.Columns("B:C").Value = ws.Columns("B:C").Value
End Sub
始终确保您的 Range
和 Columns
对象引用了工作簿。否则 Excel 可能会猜错工作簿。
同时避免使用 .Select
,因为这会大大降低您的代码速度并降低其可靠性,因为可以通过单击鼠标轻松更改选择:How to avoid using Select in Excel VBA.
我不确定您要解决的问题是什么。如果您在 Excel 中使用命名范围,那么您无需担心如果用户将行或列插入 Excel 文件,VBA 将引用不正确的范围。
Range("B2:C2").Select
Selection.Copy
Range("J2").Select
Selection.End(xlDown).Select
Range("B82706:C82706").Select
Range("C82706").Activate
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Columns("B:C").Select
Range("B82695").Activate
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
在这种情况下,B82706 和 c82706 行号可能不同 所以,而不是这个,我必须 select 基于最后 J 列的 B&C 列(直到结束数据)
请帮助我,提前致谢
没有看到你的数据,我不确定这是否正确,但它应该看起来像这样:
- 在 J 列中找到最后使用的行(这是您粘贴的结尾)。
- 在 B 列中找到最后使用的行(这是您粘贴的开头)。
- Copy/paste
- 将公式转换为数值
Option Explicit
Public Sub Example()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'define your worksheet name here
Dim LastRowInJ As Long 'find last used row in column J
LastRowInJ = ws.Cells(ws.Rows.Count, "J").End(xlUp).Row
Dim LastRowInB As Long 'find last used row in column B
LastRowInB = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
ws.Range("B2:C2").Copy Destination:=ws.Range("B" & LastRowInB, "C" & LastRowInJ)
Application.CutCopyMode = False
'turn formulas into values in column B and C
ws.Columns("B:C").Value = ws.Columns("B:C").Value
End Sub
始终确保您的 Range
和 Columns
对象引用了工作簿。否则 Excel 可能会猜错工作簿。
同时避免使用 .Select
,因为这会大大降低您的代码速度并降低其可靠性,因为可以通过单击鼠标轻松更改选择:How to avoid using Select in Excel VBA.
我不确定您要解决的问题是什么。如果您在 Excel 中使用命名范围,那么您无需担心如果用户将行或列插入 Excel 文件,VBA 将引用不正确的范围。