Функция числового формата Excel не работает в заданном числовом формате? - PullRequest
0 голосов
/ 03 июля 2019

Я заменяю существующие числовые форматы новыми числовыми форматами.Код необходимо заменить с использованием формата учета.Код работает для доллара, ранда и фунта, но не для евро или дирхамов.Я также хочу создать учетный формат, основанный на пользовательском вводе ... Однако проблема еще раз в том, что числовой формат не может быть применен.

Мне было интересно, есть ли способ заставить 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иметь пользовательскую форму, которая получает вводимые пользователем данные, и затем эту валюту необходимо будет объединить с общим форматом учета, который будет применяться в рабочей книге в соответствии с кодом.

Другой формат не был включен здесь, так как я все еще пытаюсь заставить дирхам и евро работать каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...