You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将VBA的Interior.Color判断代码转换为VB.NET代码的问题

解决方案:VB.NET中判断Excel单元格Interior.Color

你的核心问题是误用了Is运算符——它用于比较引用类型的引用是否一致,但cell.Interior.Color是值类型(Integer),应该用值相等运算符=来比较。结合Option Strict On和Option Explicit On,以下几种写法都能正常运行:

方法1:直接使用VB.NET的RGB函数

VB.NET的RGB()函数返回Integer类型,和cell.Interior.Color类型匹配,可直接比较:

If cell.Interior.Color = RGB(255, 255, 204) Then
    ' 执行你的业务逻辑
End If

方法2:使用颜色的十进制数值

RGB(255,255,204)对应的十进制颜色值是13434828,可以直接用这个数值比较,避免函数调用:

If cell.Interior.Color = 13434828 Then
    ' 执行你的业务逻辑
End If

方法3:使用ColorTranslator类(更面向对象的写法)

通过ColorTranslator.ToOle()将Color对象转换为Excel兼容的OLE颜色值:

Imports System.Drawing

' 后续代码
If cell.Interior.Color = ColorTranslator.ToOle(Color.FromArgb(255, 255, 204)) Then
    ' 执行你的业务逻辑
End If

为什么你的原代码无效?

你之前用Is TryCast(RGB(...), Object)的写法,会把RGB返回的Integer值装箱为Object引用。Is比较的是两个装箱对象的引用地址,而非值本身,所以永远不会匹配,导致逻辑失效。

内容的提问来源于stack exchange,提问作者HenriP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 10:24:54