Переменная Ошибка файла личного макроса XLSB
Отказ от ответственности: это не мой код. Я взял макрос из обычного файла xlsm и поместил его в файл xslb, чтобы он был удобен для анализа. Макрос работает правильно в xlsm, но сталкивается с проблемой переменной в файле xlsb.
ColumnToFormat
определяет конкретный столбец. Я проверил, что столбец присутствует в рабочем листе в моем окне Locals.
Main Sub
ColumnToFormat = Application.WorksheetFunction.Match("OR_TR_OLD_BAL", ActiveSheet.Rows(1), False)
Call FormatAmounts
Когда я начну бегать FormatAmounts
однако переменная исчезает, и Excel выдает RunTime Error 1004; Ошибка приложения или объекта. При тестировании файла xlsm этого не происходит. Переменная передается из основной подпрограммы в вспомогательную подпрограмму. Увидеть FormatAmounts
саб ниже.
Sub FormatAmounts()
ActiveSheet.Columns(ColumnToFormat).Select
Selection.TextToColumns Destination:=Range(ActiveSheet.Columns(ColumnToFormat).Address), DataType:= _
xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:= _
False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
End Sub
1 ответ
Передайте значение ColumnToFormat подпроцедуре и добавьте контроль ошибок в основной подпункт, используя Application.Match для варианта и протестировав вариант на наличие ошибок.
sub main()
dim ColumnToFormat as variant
ColumnToFormat = Application.Match("OR_TR_OLD_BAL", ActiveSheet.Rows(1), 0)
if not iserror(ColumnToFormat ) then FormatAmounts clng(ColumnToFormat)
end sub
Sub FormatAmounts(c as long)
with ActiveSheet.Columns(c)
.TextToColumns Destination:=.cells(1), DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
end with
End Sub