【发布时间】:2014-07-08 16:03:00
【问题描述】:
早上好,
我遇到了类似的问题:Case Like doesn't work in VBA
基本上,当我们使用 LIKE 运算符时,我们会得到我们认为应该得到的不同结果。她的似乎只是跳到最后没有结果,但我的使用第一个案例,并且只使用第一个案例,而忽略其余的案例,即使它们不匹配。
我想要的效果是我想选择一个单元格范围,并为范围内的每个单元格循环导出值到具有不同前缀的文本文件,具体取决于单元格列:
Sub test()
Dim r As Excel.Range, cell As Excel.Range
On Error Resume Next
Set r = Application.InputBox("Select Range", "Select Range", Type:=8)
On Error GoTo 0
If r Is Nothing Then Exit Sub
Open "C:\Users\User_Name\Documents\Macro Results\text.txt" For Output As #1
For Each cell In r
Select Case CellVal
Case cell.Address Like "$A$#"
Print #1, "Last Name: " + cell.Value + " " + cell.Address
Case cell.Address Like "$B$#"
Print #1, "First Name: " + cell.Value + " " + cell.Address
Case cell.Address Like "$C$#"
'Do Nothing Print #1, "First Name: " + cell.Value + " " + cell.Address
Case cell.Address Like "$F$#"
Print #1, "Email: " + cell.Value + " " + cell.Address
Case cell.Address Like "$G$#"
Print #1, "Phone#: " + cell.Value + " " + cell.Address
Case cell.Address Like "$H$#"
'Do Nothing
Case cell.Address Like "$I$#"
'Do Nothing
Case cell.Address Like "$J$#"
'Do Nothing
Case cell.Address Like "$K$#"
'Do Nothing
Case cell.Address Like "$L$#"
'Do Nothing
Case cell.Address Like "$M$#"
'Do Nothing
Case cell.Address Like "$N$#"
Print #1, "Token Type: " + cell.Value + " " + cell.Address
Case cell.Address Like "$O$#"
Print #1, "Token#:" + cell.Value + " " + cell.Address
Case Else
End Select
Next
Close
End Sub
我希望输出看起来像:
Last Name:
First Name:
Email:
Phone#:
Token Type:
Token#:
我不想为 like 语句添加每个单独的单元格列,但是在测试宏中,我能够使用这种技术成功区分 A 列和 B 列。它在最终的电子表格中不起作用。
任何帮助或指导将不胜感激。谢谢!
【问题讨论】:
-
您没有为变量
CellVal分配任何内容,因此您马上就会遇到逻辑错误:CellVal将始终为空/空字符串,除非您对其进行分配。 -
谢谢,我没有收到错误,这可能意味着它会自动定义它,但我已经这样做了。
标签: excel sql-like case-statement vba