设置变量以更改单元格的格式

时间:2017-02-02 09:13:08

标签: excel vba excel-vba variables

我刚刚制作了这个宏,它似乎有效,但现在却没有。

它现在说细胞E26是空的,但事实上它在细胞中有英镑。

范围(“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

2 个答案:

答案 0 :(得分:3)

E26变量为空,因为您没有填充它,您需要E26 = ...之类的东西!

我将变量的名称更改为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")

我还添加了对工作表的引用,以便它知道哪个工作表可以工作:

Sheet1中的With Sheets("Sheet1")更改为工作表的名称,或更改为With ActiveSheet,如果您希望它可以使用活动工作表! ;)

答案 1 :(得分:1)

最好总体上完全符合您的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