2017-06-01 274 views
0

我正在尝试创建一个引用单元格范围内的值并取决于那个范围内的值的宏,调用某个宏并更改单元格的颜色。例如,如果单元格A2的值为100,我希望单元格D2将其单元格的颜色更改为红色,并在用户单击单元格D2时调用某个宏。因此,如果用户在单元格A2中输入100,我需要单元格D2然后更改为红色,表示需要将更多信息添加到该行,并且一旦用户将其光标放在单元格D2上并单击单元格D2,它把他们带到一个特定的宏。 (A2:A446)我需要这个功能。所以,如果单元格A25是30,我需要单元格D25来调整红色,并且当用户单击单元格D25时,它将它们带到不同的宏(例子是假设的)。请帮忙!这里是我下面的代码:在一个宏Excel中调用不同的宏VBA

For Each c In Worksheets("JE").Range("D7:D446") 
    If c.Value = "1000GP" Then 
    Select.Cell.Interior.ColorIndex = 3 
     Call gotoref1 

     ElseIf c.Value = "1000MM" Then 
     Call gotoref2 

     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 
    ElseIf c.Value = "19FEST" Then 

     Call gotoref3 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 
    ElseIf c.Value = "20IEDU" Then 

     Call gotoref4 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 
    ElseIf c.Value = "20ONLC" Then 

     Call gotoref5 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 
    ElseIf c.Value = "20PART" Then 

     Call gotoref6 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 
    ElseIf c.Value = "20PRDV" Then 

     Call gotoref7 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 
    ElseIf c.Value = "20SPPR" Then 
     Call gotoref8 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

     ElseIf c.Value = "22DANC" Then 
     Call gotoref9 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

    ElseIf c.Value = "22LFLC" Then 
     Call gotoref10 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

     ElseIf c.Value = "22MEDA" Then 
     Call gotoref11 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

    ElseIf c.Value = "530CCH" Then 
     Call gotoref12 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

    ElseIf c.Value = "60PUBL" Then 
     Call gotoref13 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

    ElseIf c.Value = "74GA01" Then 
     Call gotoref14 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

    ElseIf c.Value = "74GA17" Then 
     Call gotoref15 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

    ElseIf c.Value = "74GA99" Then 
     Call gotoref16 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

    ElseIf c.Value = "78REDV" Then 
     Call gotoref17 
     Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 

End If 

Next c 
+1

欢迎来到stackoverflow,它有点不清楚你要求帮助。请编辑您的问题,并提供更多关于什么不适用于您的宏的信息。 –

回答

0

所以,我觉得你的问题之一可能是你正在使用一个明确的单元格区域您如果/ ELSEIF。相反,您可能需要使用r/c参考从单元格D7到F7(0,2)。

这样做的结果是每c该代码为您提供c的参考,而不是传递您尝试使用的整个“F”范围。

此外,您是否设置使用VBA或您是否愿意使用条件格式,然后允许VBA中的“更改单元格”以允许在用户将单元格更改为红色时调用sub()

+0

感谢您的回复。我愿意使用任何作品。我在印象之下条件格式仅适用于引用一个单元格时,它不允许引用一系列单元格。因为可能会有400行以上的使用,我通过VBA可能会更容易。如果你不介意解释我可以如何使用这种情况下的条件格式。 – anve

+0

只需重申,如果单元格D7(或此范围内的任何单元格)=“1000GP”,我希望单元格F7更改为红色,并且用户将能够单击单元格F7以将它们带到列表中可供选择的值。如果单元格D7不等于“1000GP”或上面列出的单元格F7中的任何其他值可以保持原样,并且用户无需单击单元格F7以获取更多信息。 – anve

+0

问题似乎是,无论D列中的值是多少,当单击F列中的应读取D列中的值的单元格,并且根据D列中的值,它应调用一个特定的单独的宏,它会将用户列入可能的值列表以填入D列。相反,它只需要用户使用一个宏来处理D COLUMN中的所有值,而不是正确的一个。 – anve