Excel - 范围内的变量

时间:2014-07-04 15:58:35

标签: excel vba excel-vba

变量tablelength计算我的表中有多少项。我想选择我的整个表格,但它的大小各不相同,因此我的范围必须包含一个变量。我搜索了很多网页并搜索了这个网站(Using variables in Excel range< - 这种方法看起来很有前途,但没有用)。下面是我的代码片段,但包含了相关的所有内容。

Private Sub CommandButton1_Click()
 Dim shSource As Worksheet
 Dim shDest As Worksheet
 Dim tablelength As Integer

 Set shDest = ThisWorkbook.Sheets("Sheet2")
 'here comes some code that determines the value of tablelength, which is 8 in this case
 shDest.Range("L" & "4" & ":" & "M" & tablelength).Select
End Sub

我很感激帮助。

编辑:调试器突出显示shDest.Range代码。

3 个答案:

答案 0 :(得分:0)

在这里,试试这个:

ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select

取自http://support.microsoft.com/kb/291308

Cells的第一个参数是行,第二个是列的数字。

所以对你来说它看起来像这样:

shDest.Range(Cells(4, 12), Cells(tablelength, 13)).Select

答案 1 :(得分:0)

如果它是电子表格上的正确表格,而不仅仅是格式化为表格的单元格,您可以直接在代码中引用表格的“实时”大小,而不必跳过所有这些环节。

在您的VBA代码中,

  1. “表格”称为ListObject
  2. 您可以声明一个新的ListObject,然后查找其DataBodyRange.Rows.Count
  3. 这应该有效:

    Sub MyMacro()
        Dim Tabl As ListObject
        Set Tabl = Worksheets("Sheet1").ListObjects("Table1")
        MsgBox Tabl.DataBodyRange.Rows.Count
    End Sub
    

    您还可以设置范围变量以引用“数据”范围。您需要使用以下代码。

    Dim Rng As Range
    Set Rng = Worksheets("Sheet1").ListObjects("Table1").DataBodyRange
    

    现在Rng.Cell(1,1)或Rng.Range(“A1”)引用数据正文的左上角单元格,依此类推......

答案 2 :(得分:0)

除非你在代码中的其他地方需要tablelength变量,否则你可以尝试使用:

shDest.Range("L4").CurrentRegion.Select

CurrentRegion.Select将选择从“L4”开始的所有单元格,直到它到达空行和列,因此提供的表格被空白单元格包围,无论大小如何都应选择整个表格