编码是
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
请建议我该如何解决?
答案 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)
使用CurrentRegion
与A1
有关,只要您知道它返回的内容就没有错。
返回第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
将无法获得所需的结果。您需要使用查找。