Я заменяю существующие числовые форматы новыми числовыми форматами.Код необходимо заменить с использованием формата учета.Код работает для доллара, ранда и фунта, но не для евро или дирхамов.Я также хочу создать учетный формат, основанный на пользовательском вводе ... Однако проблема еще раз в том, что числовой формат не может быть применен.
Мне было интересно, есть ли способ заставить Excel создать собственный формат учетных номеров на основе предоставленного символа.Пусть это будут иены, рупии, рубли и т. Д.
Я пытался создать свои собственные числовые форматы, используя коды chr, но это тоже не сработало.Я попытался заменить знак доллара на собственный, но безуспешно.Мне просто нужен простой способ изменить всю валюту в рабочей книге на другую, указанную пользователем валюту.Почему программисты не включают такую функцию в окно vba, я хотел бы знать.
Sub curren()
Application.ScreenUpdating = False
Dim s As Worksheet
Dim initialMode As Long
initialMode = Application.Calculation
Application.Calculation = xlCalculationManual
Dim strFormat As String
Dim fin As String
If Sheets("Summary").Range("e35").NumberFormat = "_-[$$-409]* #,##0.00_ ;_-[$$-409]* -#,##0.00 ;_-[$$-409]* ""-""??_ ;_-@_ " Then
fin = "_-[$$-409]* #,##0.00_ ;_-[$$-409]* -#,##0.00 ;_-[$$-409]* ""-""??_ ;_-@_ "
'"_($* #,##0.00_);_($* (#,##0.00);_($* " & Chr(150) & "??_);_(@_)" Then
' "_(" & Chr(36) & "* #,##0.00_);_(" & Chr(36) & "* (#,##0.00);_(" & Chr(36) & "* " & Chr(150) & "??_);_(@_)"
ElseIf Sheets("Summary").Range("e35").NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)" Then
fin = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
ElseIf Sheets("Summary").Range("e35").NumberFormat = "_-[$£-452]* #,##0.00_-;-[$£-452]* #,##0.00_-;_-[$£-452]* ""-""??_-;_-@_-" Then
fin = "_-[$£-452]* #,##0.00_-;-[$£-452]* #,##0.00_-;_-[$£-452]* ""-""??_-;_-@_-"
ElseIf Sheets("Summary").Range("e35").NumberFormat = "_-[$€-2]* #,##0.00_-;-[$€-2]* #,##0.00_-;_-[$€-2]* ""-""??_-;_-@_-" Then
fin = "_-[$€-2]* #,##0.00_-;-[$€-2]* #,##0.00_-;_-[$€-2]* ""-""??_-;_-@_-"
ElseIf Sheets("Summary").Range("e35").NumberFormat = "_-[$AED]* #,##0.00_-;-[$AED]* #,##0.00_-;_-[$AED]* ""-""??_-;_-@_-" Then
fin = "_-[$AED]* #,##0.00_-;-[$AED]* #,##0.00_-;_-[$AED]* ""-""??_-;_-@_-"
End If
Select Case Sheets("Input").Range("e12")
Case "Dollar"
strFormat = "_-[$$-409]* #,##0.00_ ;_-[$$-409]* -#,##0.00 ;_-[$$-409]* ""-""??_ ;_-@_ "
Case "Rand"
strFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
Case "Pound"
strFormat = "_-[$£-452]* #,##0.00_-;-[$£-452]* #,##0.00_-;_-[$£-452]* ""-""??_-;_-@_-"
Case "Euro"
strFormat = "_-[$€-2]* #,##0.00_-;-[$€-2]* #,##0.00_-;_-[$€-2]* ""-""??_-;_-@_-"
Case "Dirham"
strFormat = "_-[$AED]* #,##0.00_-;-[$AED]* #,##0.00_-;_-[$AED]* ""-""??_-;_-@_-"
End Select
Dim x As Boolean
For Each s In Application.Worksheets
s.Activate
x = False
If s.Visible = xlSheetHidden Then
s.Visible = xlSheetVisible
x = True
End If
Application.FindFormat.NumberFormat = fin
Application.ReplaceFormat.NumberFormat = strFormat
s.Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True
If x = True Then
s.Visible = xlSheetHidden
End If
Next s
Application.Calculation = initialMode
Application.ScreenUpdating = True
End Sub
"Application.ReplaceFormat.NumberFormat = strFormat"
Этот код выдает ошибку при выборе евро-дирхама или моего собственного кода формата учета.
Iиметь пользовательскую форму, которая получает вводимые пользователем данные, и затем эту валюту необходимо будет объединить с общим форматом учета, который будет применяться в рабочей книге в соответствии с кодом.
Другой формат не был включен здесь, так как я все еще пытаюсь заставить дирхам и евро работать каждый раз.