excel - 如何根据 VBA 中的活动行选择范围?
问题描述
我正在尝试根据输入的数据设置一系列单元格的单元格颜色。该行将根据当前活动的行而更改,但列将保持不变。如果活动单元格为“N/A”,我想将单元格颜色更改为黑色。我不断收到运行时错误 13:类型不匹配。我正在尝试为当前选择的任何行中的 D:F 列着色。我的代码片段如下。
Sub black_out_range()
Dim wsC As Worksheet
Dim jobRange As Range
Dim jobRange As Range
Set wsC = Worksheets("Sheet1")
Set jobRange = Range("B10", Range("B10").End(xlDown))
jobRange.Select
If TypeName(Selection) = "Range" Then
For Each i In jobRange
i.Activate
If ActiveCell = "N/A" Then
With wsC
.Range(.Cells(4, i), .Cells(6, i)).Interior.Color = RGB(0, 0, 0)
End With
提前致谢!
解决方案
您没有回答我的澄清问题,所以我会尝试假设您尝试处理真正的错误#N/A
。如果是这样,请尝试下一个代码。它还避免了选择,这不会带来任何好处,只会消耗 Excel 资源,降低代码速度:
Sub black_out_range()
Dim wsC As Worksheet, lastR As Long, i As Long
Set wsC = Worksheets("Sheet1")
lastR = wsC.Range("B" & rows.count).End(xlUp).row() 'it returns the last cell even with gaps in the range
For i = 10 To lastR
If IsError(wsC.Range("B" & i).Value) Then
If wsC.Range("B" & i).Value = CVErr(2042) Then 'the error for '#N/A' type
wsC.Range("D" & i & ":F" & i).Interior.Color = RGB(0, 0, 0)
End If
End If
Next i
End Sub
但是,如果这些单元格中确实有“N/A”,请使用下一个版本:
Sub black_out_range_bis()
Dim wsC As Worksheet, lastR As Long, i As Long
Set wsC = Worksheets("Sheet1")
lastR = wsC.Range("B" & rows.count).End(xlUp).row()
For i = 10 To lastR
If wsC.Range("B" & i).Value = "N/A" Then
wsC.Range("D" & i & ":F" & i).Interior.Color = RGB(0, 0, 0)
End If
Next i
End Sub
推荐阅读
- java - 如何替换字符串的多个部分,而这些部分有共同的字符?
- security - 如何保护只能通过远程服务器上的 SSH 访问的控制台应用程序?
- html - 在 Angular 5 应用程序中将自动完成属性设置为关闭
- laravel - 我的控制器在 laravel 项目中不起作用我面临这个错误“类 App\Http\Controllers\HelloController 不存在”
- javascript - 如何修复 document.update() 不返回新文档
- wordpress - wordpress 插件访问计数器无法正常工作
- netsuite - 在 netsuite 套件中的 post 方法中获取 html 数据
- c# - 拆分巨大视图模型/xaml 的最佳方法
- c# - 使用 C#,如何访问 exe 中的 COM 分配接口?(缺少方法异常)
- node.js - 'lrem' 命令的参数错误