excel - VBA“if”语句是否能够根据当前单元格选择产生不同的结果?
问题描述
如果标题具有特定值,我有一个宏旨在选择工作表中的整个列。在宏的该部分运行之后。我想检查电子表格的哪一部分被突出显示,并使用 IF 语句从那里移动。如果选择的是单个单元格(在本例中为 A2),则宏应沿一条路径前进。如果选择是一整列,那么它应该走不同的路径。目前它只找到 if 选择的第一部分。在下面的代码的情况下,它返回 MsgBox " The " & xStr & " column has not found." 不管当前的选择是什么。
我曾尝试在 Active.range.select 上使用 <>、is 和 isnot 参数,但这就是我目前的知识结束的地方。我是 VBA 的初学者,并且一直在使用大量的试验错误/在线帮助来拼凑这段代码。
Sub Testingifthen()
'
' Testingifthen Macro
'
Range("A2").Select
numRows = Range("A" & Rows.Count).End(xlUp).Row
Dim xRg As Range
Dim xRgUni As Range
Dim xFirstAddress As String
Dim xStr As String
On Error Resume Next
xStr = "Zip Code"
Set xRg = Range("A2:CD2").Find(xStr, , xlValues, xlWhole, , , True)
If Not xRg Is Nothing Then
xFirstAddress = xRg.Address
Do
Set xRg = Range("A2:CD2").FindNext(xRg)
If xRgUni Is Nothing Then
Set xRgUni = xRg
Else
Set xRgUni = Application.Union(xRgUni, xRg)
End If
Loop While (Not xRg Is Nothing) And (xRg.Address <> xFirstAddress)
End If
xRgUni.EntireColumn.Select
If Active.Range.Select <> Range("A2") Then
MsgBox " The " & xStr & " column has not been found."
Else
MsgBox " The " & xStr & " column has been found."
End If
'
End Sub
解决方案
Dim searchstr As String
Dim searchrange As Range
Set searchrange = ActiveSheet.Range("A2:CD2") 'headers
searchstr = "Zip Code"
If Not searchrange.Find(what:=searchstr) Is Nothing Then 'check if address is found
MsgBox (searchstr & " Column Found")
Else
MsgBox (searchstr & " Column Not Found")
End If
推荐阅读
- ios - 为什么IOS模拟器检测不到ipa?未找到 .app 文件夹
- opencv - 姿势估计后 3D 坐标轴错位
- python - 错误:(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' 无人机代码中的错误
- mysql - 存储在数据库中的“正常”数据量是多少?
- vue.js - 在异步创建完成之前安装的 Vue 触发器
- next.js - Next-auth 在预览中对每个请求运行
- python - 使用 SQLAlchemy ORM 重构代码时反映数据库对象
- angular - 获取'无法读取未定义的属性(读取'redirectUri')错误
- javascript - React Native 本机模块 - 从启动的 Activity 触发 JS 事件?
- python - 如何使用 pyleecan 库创建 Slot 对象来测试某些方法?