【发布时间】:2015-02-18 11:31:14
【问题描述】:
我在 excel 中编写了一个代码函数,该函数在函数获取输入数据后调用子例程。 功能是使用excel中的RGB值对工作表或另一个工作表中的一个单元格或单元格范围进行着色。
但是,一旦子例程开始工作,我不知道如何使用我编写的函数调用单元格值。错误说未定义变量。看起来“对于选择中的每个单元格”行导致了错误,因为一旦我将函数的数据传递给子例程,就没有声明单元格。 另外,有人可以以“Cell.Interior.Color = RGB(Red, Green, Blue)”的形式提供修改其他工作表单元格的代码吗?工作表的名称由用户输入。
Option Explicit
Dim Activate As Boolean
Public Function SETRGBCOLOR( _
Optional CurrentCellValue As Variant, _
Optional wksSheetname As String, _
Optional rngRange As Range, _
Optional byteRed As Byte = 0, _
Optional byteGreen As Byte = 0, _
Optional byteBlue As Byte = 0) As Variant
If IsMissing(CurrentCellValue) Then
SETRGBCOLOR = ""
Else
SETRGBCOLOR = CurrentCellValue
End If
Activate = False
'set greater RGB values than max RG value to 255, byte ignores the negative value of a digit
If byteRed > 255 Then byteRed = 255
If byteGreen > 255 Then byteGreen = 255
If byteBlue > 255 Then byteBlue = 255
Activate = True
Call CalculateColor(wksSheetname, rngRange, byteRed, byteGreen, byteBlue)
End Function
Private Sub CalculateColor(wksSheetname As String, rngRange As Range, byteRed As Byte, byteGreen As Byte, byteBlue As Byte)
If Activate = True Then
If Trim(wksSheetname) <> "" Then
If Trim(rngRange) <> "" Then
For Each Cell In Selection
Cell.Interior.Color = RGB(byteRed, byteGreen, byteBlue)
Next Cell
Else
End If
Else
If Trim(rngRange) <> "" Then
'For Each Cell In Selection
' Cell.Interior.Color = RGB(byteRed, byteGreen, byteBlue)
'Next Cell
Else
End If
End If
End If
Activate = False
End Sub
【问题讨论】: