如何仅选择Excel中有背景色的情况?

如何仅选择Excel中有背景色的情况?,excel,vba,Excel,Vba,我想知道如何通过他的背景色选择一个案例?我的想法是把所有这些选定的大写字母,我已经得到了我的宏大写一个特定的列,但我在选择部分丢失 我的宏将大写A列中的所有大小写: Public Mmi As Boolean Sub test() Dim Lg%, i% Lg = Range("A65536").End(xlUp).Row If Mmi = False Then For i = 2 To Lg Cells(i, 1) = UCase(Cells(i, 1)) 'maj

我想知道如何通过他的背景色选择一个案例?我的想法是把所有这些选定的大写字母,我已经得到了我的宏大写一个特定的列,但我在选择部分丢失

我的宏将大写A列中的所有大小写:

Public Mmi As Boolean
Sub test()
Dim Lg%, i%
Lg = Range("A65536").End(xlUp).Row
If Mmi = False Then
    For i = 2 To Lg
        Cells(i, 1) = UCase(Cells(i, 1)) 'maj
    Next i
    Mmi = True
Else
    Next i
End If
End Sub
我想只大写我的选择(在这种情况下,我的选择将是所有的背景色的情况下),我如何才能做到这一点

我得到了RGB代码->
RGB(0176240)

非常感谢你的帮助

编辑

这是大写或小写的完整代码。这可能对其他人有帮助。仅供参考,此宏是由另一位SO成员提供的,因此我没有制作此宏的资格,我只是添加/删除了一些内容以使其适合我的个人使用:)

始终可以使用该属性验证单元格的当前颜色

单元格(i,1).Interior.Color=RGB(0176240)

始终可以使用该属性验证单元格的当前颜色

单元格(i,1).Interior.Color=RGB(0176240)


在尝试破译您的代码中发生的更多内容,并根据注释确定是否有背景色时,我将修改您的代码,如下所示:

Sub test()
    Dim Lg As Long, i As Long
    Lg = Range("A65536").End(xlUp).Row
    For i = 2 to Lg Step 1
        If Cells(i, 1).Interior.ColorIndex <> 0 Then
            Cells(i, 1).Value = UCase(Cells(i, 1).Value) 'maj
        End if
    Next i
End Sub
模拟数据显示代码执行的示例:


在尝试破译代码中发生的更多内容,并根据注释确定是否有背景色时,我将修改代码,如下所示:

Sub test()
    Dim Lg As Long, i As Long
    Lg = Range("A65536").End(xlUp).Row
    For i = 2 to Lg Step 1
        If Cells(i, 1).Interior.ColorIndex <> 0 Then
            Cells(i, 1).Value = UCase(Cells(i, 1).Value) 'maj
        End if
    Next i
End Sub
模拟数据显示代码执行的示例:



所以你问
如果.colorindex为0,那么
?@Satanas使用backticks`来包围你的代码。另外,我不知道为什么要使用
rgb()
,只需使用
0
作为白色的颜色索引。@jclasley这是我第一次看到不涉及狩猎的术语“backtick”。将尝试记住,作为本网站的上下文。。。通常只称之为坟墓(gr ahv)。@Cyril,哈!如果你说的是坟墓,我根本不知道你的意思。我们今天都学到了一些东西,嗯?另外一点,
Mmi
被解除关联,并被设置为
False
,直到运行被截断的宏,其中它被设置为
True
。由于它是在内存中分配的,如果反复运行此宏,则在关闭Excel之前,它应该是
True
。需要注意公共变量,以确保您控制它们的初始大小写和最终大小写,而不是依赖隐式声明。因此,您要问
如果.colorindex 0那么
?@Satanas使用backticks`来包围您的代码。另外,我不知道为什么要使用
rgb()
,只需使用
0
作为白色的颜色索引。@jclasley这是我第一次看到不涉及狩猎的术语“backtick”。将尝试记住,作为本网站的上下文。。。通常只称之为坟墓(gr ahv)。@Cyril,哈!如果你说的是坟墓,我根本不知道你的意思。我们今天都学到了一些东西,嗯?另外一点,
Mmi
被解除关联,并被设置为
False
,直到运行被截断的宏,其中它被设置为
True
。由于它是在内存中分配的,如果反复运行此宏,则在关闭Excel之前,它应该是
True
。需要注意公共变量,以确保您控制它们的初始大小写和最终大小写,而不是依赖于隐式声明。。。在较新版本的Excel中,相当于“As Integer”的类型声明将自动转换为“As Long”。如果要使用类型声明进行定义,请使用
(与符号)。首先,谢谢你的帮助。我已经试过你的代码,但我仍然把所有的大小写都用大写。例如,我有30个小写单元格,其中6个有bg颜色,我仍然有30个大写单元格,而不是6。@Satanas您需要对yoru问题进行编辑,以显示您从这个答案中尝试了什么(由于格式问题,无法可靠地从注释中读取代码)。从那里,我们可以看到,如果一些东西没有完全过来或是不适当的。后脚本。。。在较新版本的Excel中,相当于“As Integer”的类型声明将自动转换为“As Long”。如果要使用类型声明进行定义,请使用
(与符号)。首先,谢谢你的帮助。我已经试过你的代码,但我仍然把所有的大小写都用大写。例如,我有30个小写单元格,其中6个有bg颜色,我仍然有30个大写单元格,而不是6。@Satanas您需要对yoru问题进行编辑,以显示您从这个答案中尝试了什么(由于格式问题,无法可靠地从注释中读取代码)。从这里我们可以看出是否有什么东西没有完全解决或者不合适。尽管你是在强调如何识别一个单元格,但我认为这无助于内部颜色布尔检查的简单性。如果这可以在OP的调查中使用,那么你会得到一个更有用的答案。尽管你在强调如何识别一个单元格,但我认为这无助于内部颜色的布尔检查的简单性。如果这可以在OP的调查中使用,那么你会得到一个更有用的答案。
Sub test()
    Dim Lg As Long, i As Long
    Lg = Range("A65536").End(xlUp).Row
    For i = 2 To Lg Step 1
        If Cells(i, 1).Interior.ColorIndex <> xlNone Then
            Cells(i, 1).Value = UCase(Cells(i, 1).Value) 'maj
        Else
            Cells(i, 1).Value = LCase(Cells(i, 1).Value) 'maj
        End If
    Next i
End Sub