Ошибка времени выполнения 424 в макросах Excel

Я новичок в макросах excel, я работаю над созданием макроса, который должен форматировать ячейки, а также генерировать штрих-код для столбца A. Создал функцию Code128() для преобразования строки в штрих-код, как указано в < href="https://code.adonline.id.au/easily-generate-code-128-barcodes-in-excel/" rel="nofollow noreferrer">блог, и он отлично работает.

введите здесь описание изображения

Я использую их в макросах, которые я создаю, как показано ниже.

 With ActiveSheet.PageSetup
 .PrintTitleRows = "$1:$1"
 .PrintGridlines = True

 .Orientation = xlLandscape
 .PaperSize = xlPaperA4

 .Zoom = False
 .FitToPagesWide = 1
 .FitToPagesTall = False

End With

Columns("A").ColumnWidth = 10

For Each Target In Range("A1", Range("A" & Rows.Count).End(xlUp))
If Target.Value <> vbNullString Then
    Target.Value = PERSONAL.XLSB!Code128(Target.Value)
    Target.Resize(, 12).WrapText = True
    Target.Font = "Code 128"
End If
Next

Next

Но когда я запускаю макрос в excel, я получаю ошибку времени выполнения, например

введите здесь описание изображения

введите здесь описание изображения


person user4912134    schedule 22.03.2017    source источник
comment
Я создал функцию в личной книге, и она выглядит так, как показано на рисунке.   -  person user4912134    schedule 22.03.2017
comment
Я не думаю, что вы можете ссылаться на личную книгу таким образом... Компилятор интерпретирует PERSONAL.XLSB как вызов object.method, и это неверно. держать на секунду...   -  person David Zemens    schedule 22.03.2017
comment
дело не в том, что вы не можете использовать эти функции, вы просто не можете использовать их так, как вы пытаетесь их использовать. Что касается того, куда они должны помещаться, они не могут размещаться в файле .CSV, и то, поместите ли вы их в Book1 или Personal.xlsb, зависит от того, где вам нужно их использовать. Если это только локальные вспомогательные функции, поместите их в Book1. Если это общие функции, которые вы можете использовать во многих разных файлах, поместите их в Личные.   -  person David Zemens    schedule 22.03.2017
comment
Что может быть решением этого.   -  person user4912134    schedule 22.03.2017


Ответы (1)


Вы должны иметь возможность использовать Application.Run для оценки функции, которая существует в другой книге. Формат этого:

Target.Value = Application.Run("PERSONAL.XLSB!Module2.Code128", Target.Value)

Или в более общем плане:

= Application.Run(workbookname$ & "!" & modulename & "." & functionname, args())

За исключением этого, вы можете Добавить ссылку на Личный .xlb в вашей Книге1.

person David Zemens    schedule 22.03.2017
comment
Теперь я получаю ошибку в строке Target.Font = "Code 128". Мне нужно преобразовать стиль шрифта значений в столбце A. Он снова говорит, что объект не поддерживает это свойство или метод. Я уже установил шрифт Code 128 и вижу их в выпадающем списке шрифтов excel. - person user4912134; 22.03.2017
comment
@ user4912134 Попробуйте Target.Font.Name = "Code128". - person David Zemens; 22.03.2017