String Excel VBA:函数如何返回带有各种颜色字符的字符串?
下面的代码应该生成一个字符串,比如 XXXXX | XXXXX | XXXXX | XXXXX | XXXXX | XXXXX。 这代表了我正在构建的6周内的5个工作日。 我还希望前几个X是黑色的,其余的是红色的。例如,我们可能在第二周进行了一部分,我希望前7个X是黑色的,其余的都是红色的 我的代码可以生成这个字符串。然而,我不知道如何使颜色发生变化。我不知道如何给函数返回的实际字符串着色。因此,我尝试在TargetCell参数中添加一个自单元格引用,以便在构建字符串时,可以为结果着色 在我的电子表格单元格D3中,我有一个公式 =BuildColorStringA3、A4、A5、C2、C3、D3、B41:B45 不要太担心前5个参数或最后一个参数。关注第六个参数,即D3的自参考 无论如何,如果我将第5个参数设为完全不同的单元格,那么该单元格中的文本将正确着色。但是,如果我尝试给我生成的结果着色,它就不起作用了 我意识到我这里有鸡和蛋的问题。我想不出怎么过去 我还尝试从着色中分离字符串生成。我把颜色放在我按下的按钮后面。它不起作用。我似乎无法对函数的字符串构建结果着色 下面是我的代码:String Excel VBA:函数如何返回带有各种颜色字符的字符串?,string,vba,colors,String,Vba,Colors,下面的代码应该生成一个字符串,比如 XXXXX | XXXXX | XXXXX | XXXXX | XXXXX | XXXXX。 这代表了我正在构建的6周内的5个工作日。 我还希望前几个X是黑色的,其余的是红色的。例如,我们可能在第二周进行了一部分,我希望前7个X是黑色的,其余的都是红色的 我的代码可以生成这个字符串。然而,我不知道如何使颜色发生变化。我不知道如何给函数返回的实际字符串着色。因此,我尝试在TargetCell参数中添加一个自单元格引用,以便在构建字符串时,可以为结果着色 在我的电
Function BuildColorString(BeginDate As Date, EndDate As Date, Holidays As Integer, AsOfDate As Date, HolidaysPassed As Integer, TargetCell As Range, rColors As Range)
Dim iDayCount As Integer
Dim iPosition As Integer
Dim iColor As Integer
Dim WIPDate As Date
Dim iWeekDay As Integer
' BUILD STRING
BuildColorString = ""
WIPDate = BeginDate
While WIPDate <= EndDate
iWeekDay = Weekday(WIPDate)
If (iWeekDay = 1) Then
'Sunday
Else
If (iWeekDay = 7) Then
'Saturday
If (WIPDate <> BeginDate) Then
BuildColorString = BuildColorString & "|"
End If
Else
'Weekday
BuildColorString = BuildColorString & "X"
End If
End If
WIPDate = WIPDate + 1
Wend
' COLORIZE STRING
WIPDate = BeginDate
iDayCount = 1
iPosition = 1
While WIPDate <= EndDate
iWeekDay = Weekday(WIPDate)
If (iWeekDay = 1) Then
'Sunday
Else
If (iWeekDay = 7) Then
'Saturday
If (WIPDate <> BeginDate) Then
iPosition = iPosition + 1
End If
Else
'Weekday
If (iPosition <= 5) Then
' BLACK, Prior Completed
iColor = rColors(1, 1).Characters(1, 1).Font.ColorIndex
Else
' GREEN, Recent Completed
iColor = rColors(3, 1).Characters(1, 1).Font.ColorIndex
End If
TargetCell(1, 1).Characters(iPosition, 1).Font.ColorIndex = iColor
' BuildColorString.Characters(iPosition, 1).Font.ColorIndex = vbRed 'rColor.Font.ColorIndex
iDayCount = iDayCount + 1
iPosition = iPosition + 1
End If
End If
WIPDate = WIPDate + 1
Wend
End Function
用作工作表单元格自定义项的VBA函数通常只能向调用单元格返回值:它们不能直接修改工作表,包括更改格式。