Office分析中重复的空白列标题

时间:2017-04-05 09:48:50

标签: excel vba excel-vba pivot-table

我有一段代码,它在下面的行中发现我得到的错误是

  

'运行时错误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

enter image description here

2 个答案:

答案 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