Excel 使用VBA将单元格格式从一张图纸映射到另一张图纸

Excel 使用VBA将单元格格式从一张图纸映射到另一张图纸,excel,vba,Excel,Vba,所以我递归地在一张纸上写一些文字。在另一个工作表中,我在另一个工作表的列中包含所有这些文本值,其中右侧的列包含我拥有的文本值的相应重命名和格式。这是一个例子: 如何引用此“格式”工作表,以获取每个单元格右侧的单元格值和格式?因此不确定递归部分,但这就是如何引用工作表/单元格并搜索粗体和彩色的单词的方法 Function returnFontColor(targetString As String) As Integer Dim formatSheet As Worksheet

所以我递归地在一张纸上写一些文字。在另一个工作表中,我在另一个工作表的列中包含所有这些文本值,其中右侧的列包含我拥有的文本值的相应重命名和格式。这是一个例子:


如何引用此“格式”工作表,以获取每个单元格右侧的单元格值和格式?

因此不确定递归部分,但这就是如何引用
工作表/单元格
并搜索粗体彩色的单词的方法

Function returnFontColor(targetString As String) As Integer

    Dim formatSheet As Worksheet
    Dim lastRow As Long
    Dim row As Long
    Dim counter As Integer

    returnFontColor = 0

    Set formatSheet = ThisWorkbook.Worksheets("insert format sheet name")

    With formatSheet

        lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row

        For row = 2 To lastRow
            If Lcase(CStr(.Range("B" & row).Value)) = Lcase(CStr(targetString)) Then
                For counter = 1 To Len(.Range("C" & row).Value)
                    If .Range("C" & row).Characters(Start:=counter, Length:=1).Font.ColorIndex <> 0 Then

                        returnFontColor = .Range("C" & row).Characters(Start:=counter, Length:=1).Font.ColorIndex
                        GoTo Exiter
                    End If
                Next
            End If
        Next
    End With
Exiter:

End Function
函数returnFontColor(targetString作为字符串)作为整数
将表单设置为工作表
最后一排一样长
暗排一样长
作为整数的Dim计数器
returnFontColor=0
Set formatSheet=此工作簿。工作表(“插入格式表名称”)
带格式表
lastRow=.Cells(.Rows.Count,2).End(xlUp).Row
对于第2行到最后一行
如果Lcase(CStr(.Range(“B”)和row.Value))=Lcase(CStr(targetString)),则
对于计数器=1到Len(.Range(“C”和row).Value)
If.Range(“C”和row).Characters(开始:=计数器,长度:=1)。Font.ColorIndex 0然后
returnFontColor=.Range(“C”和row).字符(开始:=计数器,长度:=1).Font.ColorIndex
去出口
如果结束
下一个
如果结束
下一个
以
出口:
端函数

这个问题有点难理解。。你能提供一个例子/屏幕截图吗?还有,你有没有尝试过任何迄今为止不起作用的东西?所以我递归地获取一些文本值,例如“alpha”,我想将其写入输出表。在链接的格式表中,我在第二列中将这些文本值标记为“Child”。在这列的右边,我有一个标签为“Name”的列,它有一个更新的文本值,以及我想要输出表的格式,而不仅仅是“alpha”。例如,我将写ALPH而不是alpha。单元格中的格式和更新名称是如何分开的?你说的格式是什么意思?你能举一个具体的例子吗?格式和更新的名称在同一列中,它是Excel中在列中更新名称上设置的预设颜色/粗体,因此我必须以某种方式获取它,我不确定如何获取。我想我误解了这个问题。从VBA代码,我不知道我要找的颜色。我只是有一个文本值,我想映射到一个单元格,它将有一些颜色(让我们忽略粗体)。我想用我的函数获取这个颜色,然后让函数返回它(可能以RGB值的形式?),并使用函数在我预定义的代码中写入单元格时返回的内容。@ÉvaristeGalois更新了答案,以返回单元格中第一个非黑色字符的颜色索引(颜色索引=0)。您可以将类似“alpha”的可搜索字符串传递给函数,它将在“Child”列(B)中查找它。此链接解释字体/单元格的颜色索引:@evaristegalois假设您搜索的是字体颜色而不是单元格填充颜色