Vba 从范围的每个单元格中获取值。区域

Vba 从范围的每个单元格中获取值。区域,vba,excel,Vba,Excel,我有我得到的密码 Sub-QuickMap() 模糊公式细胞 暗文本单元格 暗号 暗区 如果TypeName(ActiveSheet)“工作表”,则退出Sub '为单元格子集创建对象变量 出错时继续下一步 设置公式单元格=范围(“A1”)。特殊单元格_ (xlFormulas、xlNumbers+xlTextValues+xlLogical) 设置TextCells=Range(“A1”)。特殊单元格(xlConstants,XLTextValue) Set NumberCells=范围(“A1

我有我得到的密码

Sub-QuickMap()
模糊公式细胞
暗文本单元格
暗号
暗区
如果TypeName(ActiveSheet)“工作表”,则退出Sub
'为单元格子集创建对象变量
出错时继续下一步
设置公式单元格=范围(“A1”)。特殊单元格_
(xlFormulas、xlNumbers+xlTextValues+xlLogical)
设置TextCells=Range(“A1”)。特殊单元格(xlConstants,XLTextValue)
Set NumberCells=范围(“A1”)。特殊单元(XLCONTANTS,xlNumbers)
错误转到0
'添加新工作表并设置其格式
表。添加
用细胞
.ColumnWidth=2
.Font.Size=8
.HorizontalAlignment=xlCenter
以
Application.ScreenUpdating=False
“你喜欢公式单元格吗
如果不是空的(公式细胞),那么
用于公式单元格中的每个区域。区域
带ActiveSheet.Range(Area.Address)
.value=“F”
.Interior.ColorIndex=3
以
下一个领域
如果结束
'是否删除文本单元格
如果不是空的(文本单元格),则
用于文本单元格中的每个区域。区域
带ActiveSheet.Range(Area.Address)
.value=“T”
.Interior.ColorIndex=4
以
下一个领域
如果结束
'执行数字单元格
如果不是空的(NumberCells),那么
用于每个区域,单位为NumberCells.Areas
带ActiveSheet.Range(Area.Address)
.value=“N”
.Interior.ColorIndex=6
以
如果结束
下一个领域
如果结束
端接头
此代码所做的是使用其他
工作表
的映射创建一个新的
工作表
,例如,它在另一个工作表上放置一个背景颜色为黄色的N,其中是数字或常量

我想在地图上的单元格中将背景色设置为蓝色,其中另一个工作表上的值为数字且大于130

它似乎有一个非常简单的解决方案,但我尝试过使用它,就像使用
范围一样,但没有得到任何令人满意的结果


所以,我的问题是,如何使用条件语句获得每个单元格的值?提前感谢。

您可以在区域上循环项目。如果单个项目对应您的文本背景单元格将为蓝色,否则为黄色

Sub QuickMap()
        Dim FormulaCells
        Dim TextCells
        Dim NumberCells
        Dim Area

        If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub

    '   Create object variables for cell subsets
        On Error Resume Next
        Set FormulaCells = Range("A1").SpecialCells _
          (xlFormulas, xlNumbers + xlTextValues + xlLogical)
        Set TextCells = Range("A1").SpecialCells(xlConstants, xlTextValues)
        Set NumberCells = Range("A1").SpecialCells(xlConstants, xlNumbers)
        On Error GoTo 0

    '   Add a new sheet and format it
        Sheets.Add
        With Cells
            .ColumnWidth = 2
            .Font.Size = 8
            .HorizontalAlignment = xlCenter
        End With

        Application.ScreenUpdating = False

    '   Do the formula cells
        If Not IsEmpty(FormulaCells) Then
            For Each Area In FormulaCells.Areas
                With ActiveSheet.Range(Area.Address)
                    .Value = "F"
                    .Interior.ColorIndex = 3
                End With
            Next Area
        End If

    '   Do the text cells
        If Not IsEmpty(TextCells) Then
            For Each Area In TextCells.Areas
                With ActiveSheet.Range(Area.Address)
                    .Value = "T"
                    .Interior.ColorIndex = 4
                End With
            Next Area
        End If

    '   Do the numeric cells
        If Not IsEmpty(NumberCells) Then
            For Each Area In NumberCells.Areas
                For Each Item In Area
                    If Item > 130 Then
                        ActiveSheet.Range(Item.Address).Value = "N"
                        ActiveSheet.Range(Item.Address).Interior.ColorIndex = 5
                    Else
                        ActiveSheet.Range(Item.Address).Value = "N"
                        ActiveSheet.Range(Item.Address).Interior.ColorIndex = 6
                    End If
                Next Item
            Next Area
        End If
    End Sub
Sub-QuickMap()
模糊公式细胞
暗文本单元格
暗号
暗区
如果TypeName(ActiveSheet)“工作表”,则退出Sub
'为单元格子集创建对象变量
出错时继续下一步
设置公式单元格=范围(“A1”)。特殊单元格_
(xlFormulas、xlNumbers+xlTextValues+xlLogical)
设置TextCells=Range(“A1”)。特殊单元格(xlConstants,XLTextValue)
Set NumberCells=范围(“A1”)。特殊单元(XLCONTANTS,xlNumbers)
错误转到0
'添加新工作表并设置其格式
表。添加
用细胞
.ColumnWidth=2
.Font.Size=8
.HorizontalAlignment=xlCenter
以
Application.ScreenUpdating=False
“你喜欢公式单元格吗
如果不是空的(公式细胞),那么
用于公式单元格中的每个区域。区域
带ActiveSheet.Range(Area.Address)
.Value=“F”
.Interior.ColorIndex=3
以
下一个领域
如果结束
'是否删除文本单元格
如果不是空的(文本单元格),则
用于文本单元格中的每个区域。区域
带ActiveSheet.Range(Area.Address)
.Value=“T”
.Interior.ColorIndex=4
以
下一个领域
如果结束
'执行数字单元格
如果不是空的(NumberCells),那么
用于每个区域,单位为NumberCells.Areas
对于区域中的每个项目
如果项目>130,则
ActiveSheet.Range(Item.Address).Value=“N”
ActiveSheet.Range(Item.Address).Interior.ColorIndex=5
其他的
ActiveSheet.Range(Item.Address).Value=“N”
ActiveSheet.Range(Item.Address).Interior.ColorIndex=6
如果结束
下一项
下一个领域
如果结束
端接头

这里有一个简单的例子:
对于范围(“A1”、“C3”)中的每个c,如果c.Value=“1”,则我有这个变量区域,我用它来迭代区域,但我不能使用Area.Value
Sub QuickMap()
        Dim FormulaCells
        Dim TextCells
        Dim NumberCells
        Dim Area

        If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub

    '   Create object variables for cell subsets
        On Error Resume Next
        Set FormulaCells = Range("A1").SpecialCells _
          (xlFormulas, xlNumbers + xlTextValues + xlLogical)
        Set TextCells = Range("A1").SpecialCells(xlConstants, xlTextValues)
        Set NumberCells = Range("A1").SpecialCells(xlConstants, xlNumbers)
        On Error GoTo 0

    '   Add a new sheet and format it
        Sheets.Add
        With Cells
            .ColumnWidth = 2
            .Font.Size = 8
            .HorizontalAlignment = xlCenter
        End With

        Application.ScreenUpdating = False

    '   Do the formula cells
        If Not IsEmpty(FormulaCells) Then
            For Each Area In FormulaCells.Areas
                With ActiveSheet.Range(Area.Address)
                    .Value = "F"
                    .Interior.ColorIndex = 3
                End With
            Next Area
        End If

    '   Do the text cells
        If Not IsEmpty(TextCells) Then
            For Each Area In TextCells.Areas
                With ActiveSheet.Range(Area.Address)
                    .Value = "T"
                    .Interior.ColorIndex = 4
                End With
            Next Area
        End If

    '   Do the numeric cells
        If Not IsEmpty(NumberCells) Then
            For Each Area In NumberCells.Areas
                For Each Item In Area
                    If Item > 130 Then
                        ActiveSheet.Range(Item.Address).Value = "N"
                        ActiveSheet.Range(Item.Address).Interior.ColorIndex = 5
                    Else
                        ActiveSheet.Range(Item.Address).Value = "N"
                        ActiveSheet.Range(Item.Address).Interior.ColorIndex = 6
                    End If
                Next Item
            Next Area
        End If
    End Sub