2017-02-02 2 views
0

Я сделал этот макрос некоторое время назад, и он, похоже, сработал, но теперь это не так.Установка переменной для изменения формата ячейки

Теперь он сказал, что ячейка E26 пуста, но на самом деле она имеет фунт в ячейке.

Диапазон («G9») и т. Д. Имеет номера, которые я хочу добавить знак E, когда ячейка E26 имеет в нем GBP.

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 
+0

У вас есть ошибка? Если да, то каково сообщение и какова линия? Если нет, что не так, как ожидалось? – R3uK

+0

Единственные элементы ive изменились с тех пор, как последний раз он работал, является ли ячейка его G16 в последний раз. Он не вызывает ошибку, так как не выделяет строку кода. Когда я нависаю над E26 на второй строке кода, он говорит, что он пуст. Но в excel ячейка содержит GBP. Не уверен, что мне нужно изменить «Dim E26» на что-то другое. –

+0

@JJunior - это 'GBP' часть форматирования ячейки, сделанная в Excel? –

ответ

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, если вы хотите, чтобы он работал с активным листом! ;)

+0

+ приятно на комментариях на 'End Select' и т. Д. –

+0

@ShaiRado: Thx! Я заставляю себя привыкнуть к этой привычке из-за вложенных и других вещей (работа с Word на данный момент, так что это чертовски полезно! ^^) – R3uK

+0

Я только что протестировал это, это работает! Спасибо –

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 
Смежные вопросы