我是编程/编码的新手,我的代码遇到了问题。
我目前正在尝试在excel中编写一个宏,它将遍历一个Excel文档并在重复的列上插入一个部分空白的行。
我目前正在使用Excel 2010
例如,如果excel表包含:
Column A, Column B, Column C, Column D, Column E
1 Apples 1 40 Blue
1 Bananas 2 50 Red
1 Oranges 3 60 Pink
2 Cherries
3 Kiwis
然后脚本会将其排序为:
Column A, Column B, Column C, Column D, Column E
1 Apples 1 40 Blue
1 Bananas
1 Oranges
2 Cherries 2 50 Red
3 Kiwis 3 60 Pink
因此,如果A列中的值不等于C列中的值,则按列A和C对数据进行排序,同时在C,D和E中创建空格。
到目前为止我的代码:
Sub Main()
Dim a As Long, c As Long
Dim objRange As Range
Dim strCIDCol1 As String, strCIDCol3 As String
a = 1 'row counter for Column A
c = 1 'row counter for Column C
Do Until ActiveSheet.Cells(a, 1) = ""
'sets the loop to run until A1 is blank
strCIDCol1 = ActiveSheet.Cells(a, 1)
'sets the value of A1 as CIDCol1
strCIDCol3 = ActiveSheet.Cells(c, 3)
'sets the value of C1 as CIDCol3
If (strCIDCol1 <> strCIDCol2) Then
'runs until A(a) and C(c) are not equal
Set objRange = ActiveSheet.Cells(c, 3).Range(Cells(c, 3), Cells(c, 5))
objRange.Activate
'Selects Columns C, D, and E
objRange.Insert (xlShiftDown)
'Inserts "Shift Row Down"
strCIDCol1 = ActiveSheet.Cells(a + 1, 1)
'moves on
End If
a = a + 1 'adds 1 to counter to move to next row
c = c + 1 'adds 1 to counter to move to next row
Loop
End Sub
我一直在
上收到“无效的外部程序”错误a = 1
c = 1
和
a = a + 1
c = c + 1
我还在
上收到1004错误“范围类的插入方法失败”objRange.Insert (xlShiftDown)
我不知道我在用objRange做什么。我在网上看到了这些代码并尝试调整它以适应我的需要。解释的方式是objRange用于突出显示选定区域C,D和E列。然后Insert会通过在突出显示的单元格上方插入一行来移动单元格。
答案 0 :(得分:0)
If (strCIDCol1 <> strCIDCol2) Then
您从未定义过strCIDCoL2。我认为你的意思是str CIDCol3。
Set objRange = ActiveSheet.Cells(c, 3).Range(Cells(c, 3), Cells(c, 5))
这是设置范围的错误语法。尝试使用:
Set objRange = Range(ActiveSheet.Cells(c,3).Range(Cells(c,3), Cells(c,5)))
您还确定使用objRange.activate而不是objRange.select吗?