如何在VBA中声明Excel范围?

如何在VBA中声明Excel范围?,excel,vba,raw-data,Excel,Vba,Raw Data,因此,我丢失了所有VBA注释,在这里重做一些逻辑时遇到问题,因此,如果这看起来非常基本,我向您道歉。我正在尝试查找set the top,并在列中查找最后填充的单元格,并将它们都设置在我的范围内,以便能够将其复制并粘贴到日志中。当我进入MYRANGE部分时,我得到: 错误1004 我已经尝试使用一个更基本的选择来实现我想要做的事情,但是原始数据永远不会是相同的大小,所以我想回到这里,尝试一下,看看是否可以得到帮助 Sub CopyRows() Dim sht As Worksheet

因此,我丢失了所有VBA注释,在这里重做一些逻辑时遇到问题,因此,如果这看起来非常基本,我向您道歉。我正在尝试查找set the top,并在列中查找最后填充的单元格,并将它们都设置在我的范围内,以便能够将其复制并粘贴到日志中。当我进入
MYRANGE
部分时,我得到:

错误1004

我已经尝试使用一个更基本的选择来实现我想要做的事情,但是原始数据永远不会是相同的大小,所以我想回到这里,尝试一下,看看是否可以得到帮助

Sub CopyRows()

    Dim sht As Worksheet
    Dim LastRow As Long
    Dim LastColumn As Long
    Dim MYRANGE As Range
    Dim Top, Bottom, Left, Right As Long        

    Set sht = Worksheets("Data")
    sht.Activate

    Set Top = Range("B2")
    LastRow = Cells(Rows.Count, "B").End(xlUp).Select
    Set MYRANGE = Range("Top", "LastRow").Select.Copy

End Sub

正如我所提到的,我正在尝试将我的范围设置为“顶部”和“底部”或“最后一行”,这样我就不必担心数据的实际大小,并将其复制粘贴到另一个工作表中。

当设置范围时,您不使用
。选择
。复制

在另一个范围中使用变量范围时,您不使用
“”

不要使用
。激活
。选择

Sub CopyRows()
    Dim sht As Worksheet
    Dim LastRow As Range
    Dim LastColumn As Long
    Dim MYRANGE As Range
    Dim Top As Range, Bottom As Range, Left As Range, Right As Range

    Set sht = Worksheets("Data")

    Set Top = sht.Range("B2")
    Set LastRow = sht.Cells(Rows.Count, "B").End(xlUp)
    Set MYRANGE = sht.Range(Top, LastRow)
    'Now you can do something with MYRANGE like MYRANGE.Copy
End Sub

设置范围时不使用
。选择
。复制

在另一个范围中使用变量范围时,您不使用
“”

不要使用
。激活
。选择

Sub CopyRows()
    Dim sht As Worksheet
    Dim LastRow As Range
    Dim LastColumn As Long
    Dim MYRANGE As Range
    Dim Top As Range, Bottom As Range, Left As Range, Right As Range

    Set sht = Worksheets("Data")

    Set Top = sht.Range("B2")
    Set LastRow = sht.Cells(Rows.Count, "B").End(xlUp)
    Set MYRANGE = sht.Range(Top, LastRow)
    'Now you can do something with MYRANGE like MYRANGE.Copy
End Sub
在一般情况下,Excel中的范围由两个单元格或一个单元格定义。定义单个单元格范围需要一个单元格,而多个单元格范围需要两个单元格

在本例中,Excel中需要两个单元格区域,因此需要定义该区域的左上角单元格和右下角单元格:

下面的代码定义了左上角单元格(
startRange
)和右下角单元格(
endRange
):

然后,它将
myRange
定义为这两者之间的四角体中的所有单元格:

守则的其他要点:

  • 它不使用
    。选择
    。激活
    ()
  • 它始终引用范围的父工作表。例如,
    wks.Range(“B2”)
  • 代码不复制单元格,而是获取它们的值,并将它们写入下一列,并使用
    myRange.Offset(0,1).Value=myRange.Value
    ,如果单元格的样式和格式也很重要,则可能不需要这些值
在一般情况下,Excel中的范围由两个单元格或一个单元格定义。定义单个单元格范围需要一个单元格,而多个单元格范围需要两个单元格

在本例中,Excel中需要两个单元格区域,因此需要定义该区域的左上角单元格和右下角单元格:

下面的代码定义了左上角单元格(
startRange
)和右下角单元格(
endRange
):

然后,它将
myRange
定义为这两者之间的四角体中的所有单元格:

守则的其他要点:

  • 它不使用
    。选择
    。激活
    ()
  • 它始终引用范围的父工作表。例如,
    wks.Range(“B2”)
  • 代码不复制单元格,而是获取它们的值,并将它们写入下一列,并使用
    myRange.Offset(0,1).Value=myRange.Value
    ,如果单元格的样式和格式也很重要,则可能不需要这些值

旁注:您想在您的代码中旁注:您想在您的代码中旁注谢谢我很感激!谢谢你,我很感激!令人惊叹的!谢谢你,我将查看该链接@理查德扬-这绝对是一个值得的。太棒了!谢谢你,我将查看该链接@理查德扬-这绝对是一个值得的。