excel - 检查用户输入是否已经存在于第 1 行的填充单元格中
问题描述
我目前正在编写一个宏来在所有工作表中插入一个新列。它已经工作了,这只是微调它。我希望我的宏在此之前检查用户输入(用于命名新列)是否已经存在于另一列中。如果它存在,我想弹出一个窗口,用户可以在其中选择无论如何创建新列或输入另一个名称(返回输入框)。
我很确定我必须使用循环和 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
解决方案
欢迎来到 SO。
看起来你几乎明白了......问题在于你使用 Range 对象的方式:
If InStr(1, ActiveSheet.Range(i, 1).Value, Name) > 0 Then
如果需要,请Range
在此处阅读更多信息。请参阅下面如何使用Cells
来实现相同的目的:
If InStr(1, ActiveSheet.Cells(1, i).Value, Name) > 0 Then
PS:总是很好地突出显示错误所在的行,但我认为这是出错的地方。
推荐阅读
- twitter - Twitter API 在最后一次调用后返回超过速率限制天的错误消息
- python - 如何将输入的文本更改为 spacy?
- c++ - 为什么使用 memcpy 复制到 portaudio 输入缓冲区会产生噪音?
- c# - SSIS 作业突然报告不存在的语法错误
- flutter - Flutter 深层链接在你的应用中没有对应的路由
- c# - 为什么我的 Visual Studio 工具箱中缺少串行端口组件?
- static - 将 NA 转换为 "" 值
- ms-access - 我的子报表代码仅针对第一条记录运行
- azure - PowerBI 通过 Azure 数据工厂刷新
- javascript - 如何在反应中从列表中删除项目