设置一个variables来改变单元格的格式

前一阵子我做了这个macros,看起来好像有效,但现在不行。

它现在说细胞E26是空的,但实际上在细胞中有GBP。

范围(“G9”)等数字是我想添加一个英镑,当单元格E26有英镑。

Dim E26 If E26 = "GBP" Then Range("G9:G22:G24:G26").NumberFormat = "$#,##0.00" ElseIf E26 = "EUR" Then Range("G9:G22:G24:G26").NumberFormat = "[$€-2] #,##0.00" ElseIf E26 = "USD" Then Range("G9:G22:G24:G26").NumberFormat = "[$$-409]#,##0.00" End If 

E26variables是空的,因为你没有填充它,你需要像E26 = ...这样的东西!

我将variables的名称改为E26val以便看到不同之处:

 Dim E26val As String With Sheets("Sheet1") E26val = .Range("E26").Value With .Range("G9:G22:G24:G26") Select Case E26val Case Is = "GBP" .NumberFormat = "$#,##0.00" Case Is = "EUR" .NumberFormat = "[$€-2] #,##0.00" Case Is = "USD" .NumberFormat = "[$$-409]#,##0.00" Case Else 'Nothing End Select 'E26val End With '.Range("G9:G22:G24:G26") End With 'Sheets("Sheet1") 

我还添加了对工作表的引用,以便知道在哪张工作表上工作:

With Sheets("Sheet1")更改为您的工作表的名称,或者如果您希望它工作活动工作表,请将其更改为With ActiveSheet ! ;)

总而言之,完全符合你的Range

此外,您的代码是“ Select Case尖叫”。

试试下面的代码:

 Option Explicit Sub CurrencyUsed() ' modify "Sheet1" with your sheet's name With Worksheets("Sheet1").Range("G9:G22:G24:G26") Select Case Worksheets("Sheet1").Range("E26").Value Case "GBP" .NumberFormat = "$#,##0.00" Case "EUR" .NumberFormat = "[$€-2] #,##0.00" Case "USD" .NumberFormat = "[$$-409]#,##0.00" End Select End With End Sub