使用.End(XlToRight)函数将Range设置为对象时出错

时间:2017-12-12 16:45:16

标签: vba excel-vba count range excel

我试图计算一个名为" days"的对象中存储的指定范围内的单元格数量,但是我得到了

  

1004错误

当我运行以下代码来获取它时:

Sub test2()

Dim ncol As Integer
Dim days As Range

Worksheets(1).Activate
ActiveSheet.Range("B1").Select
Set days = Range(Selection, Selection.End(xlToRight))
ncol = days.Count

End Sub

设置"天&#34>时出错。范围

我已多次修改代码,但我没有发现任何错误。有谁可以帮助我?

我修改了我的代码,将其引用到一系列数据并且一直都失败了:

Sub test2()

Dim ncol As Integer
Dim days As Range

Worksheets("2017").Activate
ActiveSheet.Range("B2").Select
Set days = Range(Selection, Selection.End(xlToRight))
ncol = days.Count

End Sub

enter image description here

我最终解决了这个问题,创建了与" 2017"的对象相同的子程序。工作簿中的工作表而不是一个工作表。谢谢你们两位的帮助

2 个答案:

答案 0 :(得分:2)

如果数据存在,您的代码将有效:

enter image description here

Sub test2()

Dim ncol As Integer
Dim days As Range

Worksheets(1).Activate
ActiveSheet.Range("B1").Select
Set days = Range(Selection, Selection.End(xlToRight))
ncol = days.Count

MsgBox days.Address(0, 0) & vbCrLf & ncol

End Sub

答案 1 :(得分:2)

End(xlToRight)仅在您的单元格中包含数据时才有效。

注意:您不必使用ActivateSelectSelection

修改后的代码

Sub test2()

Dim ncol As Integer
Dim days As Range

With Sheets(1)
    Set days = .Range("B1", .Range("B1").End(xlToRight))
    ncol = days.Columns.Count ' if you want to get number of columns
    ncol = days.Cells.Count ' if you want to get number of cells (in your case it's the same)
End With

End Sub