vba - Excel VBA,如何在一个工作表上的下拉列表中使用选择格式(颜色)另一个工作表上的一系列单元格

标签 vba excel

根据我收集到的信息,条件格式无法跨工作簿中的工作表完成,所以我现在要做的是使用 VBA。

我想在 sheet1 的下拉列表中选择一个词(比如说"is"或“否”)!然后为一系列单元格着色;范围(“J3:P29”)在 sheet3 上!。如果选择"is",则范围将被着色,如果选择“否”,则范围将不被着色。

我用宏记录器记录了下面的代码。但是,它不会记录下拉列表中的选择。它只是用逗号替换了 Action 。

Sub RangeRed()
'
' RangeRed Macro
'

'
    Range("J3:P29").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End Sub

我将不胜感激一些帮助。谢谢!

最佳答案

您需要做出的几个改变。

  • 您需要利用 Worksheet_Change您的 sheet1 上的事件以更新您的 sheet3。
  • 在您的代码中,您需要直接引用 sheet3 因为您
    将无法从 sheet1 工作表事件中选择它。
  • 使用 Target值,评估它是否符合你的
    指定条件并根据需要更新 sheet3

  • 打开 VB 编辑器并打开 Sheet1 代码。然后粘贴以下代码。
    Private Sub Worksheet_Change(ByVal Target As Range)
    ' Target.Value will be contain the value of the changed cell
    If Target.Value = "Yes" Then 
        With ThisWorkbook.Sheets("Sheet3").Range("J3:J5").Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 255 
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    Else
        With ThisWorkbook.Sheets("Sheet3").Range("J3:J5").Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 0 ' change to whatever color you want if Yes is not selected
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    End If
    
    End Sub
    

    请注意 Target将捕获工作表上更改的任何单元格范围。为了解决这个问题,您可以命名具有下拉列表的单元格,然后在 Worksheet_Change 中事件,仅评估 Target如果范围的名称匹配;例如
    If Target.Name = "MyDropDown" Then
         ' Evaluate the value of Target and update sheet3 as intended
    
    End If
    

    关于vba - Excel VBA,如何在一个工作表上的下拉列表中使用选择格式(颜色)另一个工作表上的一系列单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709739/

    相关文章:

    excel - 是否可以创建一个不活动的新工作簿?

    excel - POI : Unexpected record type org. apache.poi.hssf.record.HyperlinkRecord

    vba - 如何为所有最终用户执行 Excel VBA 自动化

    javascript - 使用 js-xlsx 编写日期列

    vba - 将向左弹出的评论移动到另一列可以使其向右弹出,修改评论的内容也可以

    excel - 将列拆分为日期和时间

    ms-access - Access 登录代码出现问题

    excel - 移动高度引用的单元格,而无需在任何地方修复引用

    excel - 返回两个单元格之间的整数列表

    vba - Excel VBA 项目编译后崩溃