excel - 当我尝试循环遍历一系列单元格时,我不断收到“类型不匹配”错误
问题描述
B5:P5
如果单元格中的标题包含特定文本,我想删除整个列。
这是我到目前为止的代码:
Sub Make_Prod()
Sheets("4. Partic Charges - Final").Select
Dim i As Long
Dim StartCell As Range
Dim EndCell As Range
Dim MyValue As Range
Set StartCell = Range("B5")
Set EndCell = StartCell.End(xlToRight)
'Delete IID, LastName, FirstName, SSN, DOB, DOT, VestBal, TotalSourceDH, HasCovg, and any blank headers with values in column
For i = StartCell To EndCell
MyValue = Range(i & 5)
If MyValue = "IID" _
Or MyValue = "LastName" _
Or MyValue = "FirstName" _
Or MyValue = "DOB" _
Or MyValue = "DOT" _
Or MyValue = "HasCovg" _
Or MyValue = "" _
Then Range(5 & i).EntireColumn.Delete
Next i
End Sub
每次我尝试运行代码时,我都会得到一个
类型不匹配
i = StartCell to EndCell
我的陈述有误。
谁能帮我这个?
解决方案
您的错误的直接原因是 Nathan_Sav 指出您正在尝试使用数字循环遍历一个范围。
尝试这个。当您删除列时,您需要向后迭代以避免跳过单元格。设置范围(您可以在一行中完成),然后使用计数器变量循环遍历每个单元格。
你不需要Select Case
,你可以坚持,If
但在我看来更清楚一点。
Sub Make_Prod()
Sheets("4. Partic Charges - Final").Select
Dim i As Long
Dim StartCell As Range
Dim EndCell As Range
Dim MyValue As Range
Set StartCell = Range("B5")
Set EndCell = StartCell.End(xlToRight)
'Delete IID, LastName, FirstName, SSN, DOB, DOT, VestBal, TotalSourceDH, HasCovg, and any blank headers with values in column
Dim r As Range, c As Long
Set r = Range(StartCell, EndCell)
For c = r.Count To 1 Step -1
Select Case r.Cells(c).Value
Case "IID", "LastName", "FirstName", "SSN", "DOB", "DOT", "VestBal", "HasCovg", ""
r.Cells(c).EntireColumn.Delete
End Select
Next c
End Sub
推荐阅读
- ubuntu - ubuntu 18.04 上的 /etc/sysconfig/zabbix-server 在哪里
- c++ - Dll 注入器未检测到 Dll
- couchbase - Couchbase Java SDK 因 BUCKET_NOT_AVAILABLE 而超时
- mongodb - 如何使用父引用填充猫鼬中的一对多关系?
- python - Selenium Webdriver Python - 如何将我的mac中的照片拖放到网络照片上传界面?
- postgresql - 用 CSV 和 UTF-8 编码文件填充 postgresql 表
- java - 如何使用 Jsonb 将 JSON 中的数值数组解析为 Java 对象
- java - Druid Kafka 索引服务消耗 avro 架构错误(AvroTypeException:字段默认值无效)
- sql-server - 无法从另一台计算机连接到 SQL Server 数据库
- app-store - 修复应用商店中广播应用的问题文件证据