我有一段代码,它在下面的行中发现我得到的错误是
'运行时错误1004'方法范围对象全局失败
DS1_C = Range("Crosstab1").Columns.Count
所以我试图用代码实现的是我有空白列标题的任何地方将前面的列标题粘贴到空白列中并添加2以区分所以我可以轻松转动
我的代码低于任何所有帮助,非常感谢
我还提供了一张图片,以便更好地理解,见图1
代码
Sub Headers()
Dim DS1_C, DS1_R, lResult As Long
Dim DS1 As String
DS1 = "Sheet1"
lResult = Application.Run("SAPGetProperty", "IsDataSourceActive", "DS_1")
If lResult = True Then
DS1_C = Range("Crosstab1").Columns.Count
DS1_R = Range("Crosstab1").Rows.Count
For i = 1 To DS1_C - 1
If Worksheets(DS1).Range("A5").Offset(0, i + 1) = "" Then
Worksheets(DS1).Range("A5").Offset(0, i + 1) = Worksheets(DS1).Range("A5").Offset(0, i) & "2"
End If
Next i
End If
End Sub
图1
答案 0 :(得分:0)
这不应该像
With Sheets("Crosstab1")
Set DS1_C = .Range.Columns(.Columns.Count)
End With
您的代码DS1_C = Range("Crosstab1").Columns.Count
似乎指定了一个作为对象的范围,并且需要代码字“Set”。要将列指定为范围,语法类似于ActiveSheet.Columns(3)
。在您的代码中,列号由Activesheet.Columns.Count
的结果表示。
指定行范围时似乎有类似的错误。
答案 1 :(得分:0)
一旦您确信Crosstab1
名称存在:
根据我的评论,请尝试:
DS1_C = Worksheets(DS1).Range("Crosstab1").Columns.Count
DS1_R = Worksheets(DS1).Range("Crosstab1").Rows.Count
您也可以不是每次都引用DS1变量,而是创建要引用的对象:
Dim DS1Sht As Worksheet
Dim CTab1 As Range
Set DS1Sht = Sheets("Sheet1")
Set CTab1 = DS1Sht.Range("Crosstab1")
DS1_C = CTab1.Columns.Count
DS1_R = CTab1.Rows.Count