获取列名称

时间:2015-09-28 16:06:26

标签: excel excel-vba vba

编码是

dim a,b as double
a = application.workbookfuncation.counta(thisworkbook.sheets(1).Range("A:A"))
b = ThisWorkbook.Sheets(1).Range("A1").CurrentRegion.Columns.Count

值得关注的是,我无法了解我如何选择“A1”到columnaddress(b)&的数据。 a

请建议我该如何解决?

2 个答案:

答案 0 :(得分:1)

你做错了。这是查找最后一行和最后一列的错误方法。您可能希望看到THIS

我已经对代码进行了评论,因此您不应该在理解它时遇到问题,但如果您仍然这样做,那么只需回复:)

这是你在尝试什么? (的未测试

Sub Sample()
    Dim ws As Worksheet
    Dim lastrow As Long, lastcol As Long
    Dim rng As Range

    '~~> Change this to the relevant sheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
            '~~> Find Last Row
            lastrow = .Cells.Find(What:="*", _
                      After:=.Range("A1"), _
                      Lookat:=xlPart, _
                      LookIn:=xlFormulas, _
                      SearchOrder:=xlByRows, _
                      SearchDirection:=xlPrevious, _
                      MatchCase:=False).Row

            '~~> Find Last Column
            lastcol = .Cells.Find(What:="*", _
                      After:=.Range("A1"), _
                      Lookat:=xlPart, _
                      LookIn:=xlFormulas, _
                      SearchOrder:=xlByColumns, _
                      SearchDirection:=xlPrevious, _
                      MatchCase:=False).Column

            '~~> Construct your range here
            Set rng = .Range("A1:" & _
                      Split(Cells(, lastcol).Address, "$")(1) & lastrow)

            With rng
                '
                '~~> Do whatever you want to do with the range here
                '
            End With
        End If
    End With
End Sub

答案 1 :(得分:0)

使用CurrentRegionA1有关,只要您知道它返回的内容就没有错。

返回第1行和第1列定义的连续范围。

该范围在第1行第一个真正空单元格左侧的列水平结束。作为公式结果的零长度字符串不是真正的空白。

该范围在A列第一个真正空单元格正上方的行垂直结束。

如果A1为空,则A1的CurrentRegion为A1。

如果上述内容适合您的目的,那么您根本不需要示例中的变量。您可以从A1到A1的当前区域的最后一行和列获取地址,如下所示:

MsgBox ThisWorkbook.Sheets("Sheet1").[a1].CurrentRegion.Address

如果你想要一个对象变量,那么这样做:

Set r = ThisWorkbook.Sheets("Sheet1").[a1].CurrentRegion

既然整个范围都由r表示,您可以这样选择:

r.Parent.Activate
r.Select

注意:如果在[A1]之外的任何其他范围内使用CurrentRegion,它返回的定义会更复杂,因为它会查找上方和左侧的连续数据; [A1]没有这样的区域。

注意:如果您需要找到允许第1行和/或A列中真正空单元格的最后一行和列,则CurrentRegion将无法获得所需的结果。您需要使用查找。