我目前正在编写一个宏,以在所有工作表中插入新的列。它已经起作用了,这只是对其进行了微调。我希望我的宏检查在此之前的另一列中是否已经存在用户输入(以命名新列)。如果存在,我想弹出一个窗口,用户可以选择在其中创建新列或输入其他名称(返回InputBox)。
我很确定我必须使用循环和If分支,但是我不太确定它的精确程度。
第1行:
Do While ende = False
Name = InputBox("Name der neuen Spalte")
Anzahl_Col = Cells.CurrentRegion.Columns.Count
For i = 1 To Anzahl_Col
If InStr(1, ActiveSheet.Range(i, 1).Value, Name) > 0 Then
Retry = MsgBox("Diese Spalte existiert bereits, trotzdem fortfahren?", vbOKCancel)
If Retry = vbOK Then
Exit For
ElseIf Retry = vbCancel Then GoTo Line1
End If
Else
Exit For
End If
Next i
If StrPtr(Name) = 0 Then
MsgBox ("Abgebrochen!")
Exit Sub
ElseIf Name = "" Then
MsgBox ("Bitte etwas eingeben")
Else
Exit Do
End If
Loop
用户选择一个名称,如果该名称已经存在,则会询问他是否要继续还是输入另一个名称。
runtime error 1004 application or object-defined error
答案 0 :(得分:0)
欢迎来到。
您似乎快懂了...问题出在使用Range对象的方式上:
If InStr(1, ActiveSheet.Range(i, 1).Value, Name) > 0 Then
根据需要详细了解Range
here。请在下面查看如何使用Cells
来实现相同的目的:
If InStr(1, ActiveSheet.Cells(1, i).Value, Name) > 0 Then
PS:总是突出显示错误所在的行也总是很好,但是我认为那是哪里出错了。