我需要一些帮助来选择 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 列(直到结束数据)

请帮助我,提前致谢

没有看到你的数据,我不确定这是否正确,但它应该看起来像这样:

  1. 在 J 列中找到最后使用的行(这是您粘贴的结尾)。
  2. 在 B 列中找到最后使用的行(这是您粘贴的开头)。
  3. Copy/paste
  4. 将公式转换为数值
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

始终确保您的 RangeColumns 对象引用了工作簿。否则 Excel 可能会猜错工作簿。

同时避免使用 .Select,因为这会大大降低您的代码速度并降低其可靠性,因为可以通过单击鼠标轻松更改选择:How to avoid using Select in Excel VBA.

我不确定您要解决的问题是什么。如果您在 Excel 中使用命名范围,那么您无需担心如果用户将行或列插入 Excel 文件,VBA 将引用不正确的范围。