excel - 评估 For Each 时,子范围选择行为令人困惑
问题描述
使用下面的代码,我试图将那些浅绿色的字段设置为列标题的值。令人困惑的行为是,一旦它填充了前几个用石灰绿色填充的字段,它将永远不会再用 rCell(0) 的值填充石灰绿色字段。是什么导致 rCell 的评估发生变化?我希望它保持静态,因为选择不会改变。我已经确认 sub 正确匹配后续的浅绿色字段(因为颜色被替换),但代码此时并未写入标题值。现在我已经通过在 for each 循环之前将标头值设置为单独的字符串来解决该行为,但我想了解我在哪里迷路并失去了范围的选择。
Sub ChangeColor()
Dim rCell As Range
If Selection.Cells.Count = 1 Then
MsgBox "Select the range to be processed."
Exit Sub
End If
For Each rCell In Selection
If rCell.Interior.Color = RGB(146, 208, 80) Then 'lime green
rCell.Interior.Color = RGB(255, 255, 255) 'white
rCell.Value = rCell(0).Value
End If
Next rCell
End Sub
解决方案
该行rCell.Value = rCell(0).Value
没有像想象的那样引用标题值,它引用了范围评估内当前位置上方的单元格。正如上面的 Scott Craner 所说,我想在选择之前使用rCell.Value = Selection(0).Value
.
推荐阅读
- r - 用户在 R 中输入变量的 UI
- node.js - grpc@1.19.0 安装脚本失败
- java - 由于谷歌自动服务处理器,无法编译我的 javafx 和 selenium 项目(“无法获取公共无参数构造函数”)
- apache - 重写规则以在所有子目录中返回 index.html 而不更改 url
- data-science - 对于两个 AUC(曲线下面积) - 我如何对非劣效性进行功效分析?
- firebase - 另一个地图中地图中 Firestore 的安全规则
- java - 正则表达式在在线测试器中捕获了我想要的所有内容,但在 Java 中捕获了额外的字符
- javascript - 在 React 或 Javascript 中,我们如何为 Google Cloud Firestore 提供自定义文档 ID
- python - 代码签名 GUI python 应用程序以在 macos 上进行公证
- bazel - Bazel 构建不正确。os.bzl 出错