2016-07-22 72 views
0

在我的程序的背景顏色,我將使用Excel單元格的背景色:如何檢查Excel單元格

sheet.cells(row, column).interior.color = System.Drawing.Color.Red 

在我的程序的其他部分,我想看看如果顏色紅色,但此代碼:

If(sheet.cells(row, column).interior.color = System.Drawing.Color.Red) Then 
    'Do something 
End If 

它返回'類型強制轉換無效'異常。

如果顏色是通過檢查:

If(sheet.cells(row, column).style.interior.color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)) 
    'Do something 
End If 

的顏色被認爲是不相等的(即使電池是紅色的),因爲內部的顏色是16777215和色彩轉換返回255

如何才能比較正確的顏色?

+0

這是VB.NET中的標籤,還是VBA? – nekomatic

+0

看看這個鏈接可以幫助你將顏色轉換成RGB格式進行比較http://stackoverflow.com/questions/24132665/return-rgb-values-from-range-interior-color-or-any-other-color -property – Siva

+0

vb.net,它是一個用visual studio編寫的插件,使用微軟的interrop庫 – DrDonut

回答

0

我不是那麼肯定,但System.Drawing.Color.xxx在vba中不存在。你可以試試這個:

ActiveSheet.Cells(row, column).Interior.Color = RGB(255, 0, 0) 

If (ActiveSheet.Cells(row, column).Interior.Color = RGB(255, 0, 0)) Then 
    'Do something 
End If 

你也可以看看到.Interior.ColorIndex 我想你應該改變問題的標籤而不是VBA vb.net。

此致敬禮。

+0

試過這個,不起作用。沒有例外,但顏色被認爲是不同的。也就是說,這是一個vb.net插件,不是excel-vba,所以這可能會有所作爲。 – DrDonut

相關問題