格式化单元格范围特定货币取决于单元格值

时间:2014-11-14 17:01:55

标签: excel vba excel-vba currency-formatting

我一直在努力做IF语句和案例陈述来实现这一目标,但没有任何成功。

基本上我有一个5工作表工作簿,在每个工作表中有不同的命名范围,这些工作簿是货币格式。

但是,根据第一个标签中单元格的值(例如,它可能是CAD,USD,NOK等),这些单元格范围内的货币格式应该会发生变化。

即。如果选项卡1中的单元格值等于CAD,则选项卡2-5中的所有命名范围应为“$”,如果USD仍为“$”,则为NOK“kr”等。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

记录宏以获取您的货币格式语法并添加到您的IF语句,即..

Selection.NumberFormat = "[$kr-414] #,##0.00"

您也可以考虑使用Case Select代替多个If s

答案 1 :(得分:0)

您可以将此代码放在Tab1的Sheet代码中。 当A1 Cell更改的值时,它会触发您需要的工作表。

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Select Case Range("A1").Value
        Case "CAD"
        Worksheets("Sheet2").Range("Table1").NumberFormat = "#,##0.00 [$CAD]"
        Worksheets("Sheet3").Range("Table2").NumberFormat = "#,##0.00 [$CAD]"
        Worksheets("Sheet4").Range("Table3").NumberFormat = "#,##0.00 [$CAD]"
    Case "USD"
        Worksheets("Sheet2").Range("Table1").NumberFormat = "#,##0.00 [$USD]"
        Worksheets("Sheet3").Range("Table2").NumberFormat = "#,##0.00 [$USD]"
        Worksheets("Sheet4").Range("Table3").NumberFormat = "#,##0.00 [$USD]"
    Case "NOK"
        Worksheets("Sheet2").Range("Table1").NumberFormat = "#,##0.00 [$NOK]"
        Worksheets("Sheet3").Range("Table2").NumberFormat = "#,##0.00 [$NOK]"
        Worksheets("Sheet4").Range("Table3").NumberFormat = "#,##0.00 [$NOK]"
    End Select

End Sub