Я пытаюсь создать код для циклического просмотра пользовательской формы, чтобы увидеть, отмечены ли флажки, а затем создать PDF-файл листов. Однако я получаю сообщение об ошибке «объект не поддерживает это свойство или метод» в строке «Если ctl.controlFormat.Value = True Then». Я надеюсь, что вы можете помочь мне :)
Option Explicit
Sub Get_PDF_Click()
Dim ReportName As String
ReportName = ActiveSheet.Cells(4, 20).Value
Dim OutputPath As String
OutputPath = "T:\5. Fælles\Optima Lancering Version 1.0\6. Oversigtsark\KontoInvest\Historik\"
Dim YYMM As String
Dim Name_of_File As String
Dim Name As String
'Dim x1TypePDF As Variant
Dim cbox As CheckBox
Dim FormControlType As Variant
Dim ctl As Control
'Dim shp As Shape
YYMM = Format(WorksheetFunction.EoMonth(Now(), -1), "YYMM")
Name = "BankNordik_faktaark" & YYMM
Name_of_File = OutputPath & "BankNordik\" & Name
'------- LOOP THROUGH CHECKBOXES -------
For i = 0 To 6
For Each ctl In Me.Controls
'For Each ctl In PDFUserForm.Controls
If TypeName(ctl) = "CheckBox" Then
'If ctl.FormControlType = xlCheckBox Then
If ctl.ControlFormat.Value = True Then
For Each Ws In Worksheets
If Ws.Name = "Fakta " & Kunde_Array(i + 1, 1) Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Name_of_File, Quality _
:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
End If
Next Ws
End If
End If
Next ctl
Next i
End Sub
Именно в строке "Для каждого шп в PDFUserForm" :) и спасибо. Я все еще получаю сообщение об ошибке :/ @Pᴇʜ
Пожалуйста, редактировать свой вопрос и обновите код до того, что у вас есть после того, как вы применили мои предложения. Обратите внимание, что вы Dim PDFUserForm As UserForm, но PDFUserForm никогда не устанавливается на что-то. Следовательно, PDFUserForm — это Nothing.
@Pᴇʜ Я отредактировал вопрос. Также i и kundearray определены как общедоступные в другом модуле.
Что бы вы установили для PDFUserForm в @Pᴇʜ? :) :) :) и
@ Therese ehhhm, конечно, к желаемой пользовательской форме? • Если PDFUserForm уже является именем вашей пользовательской формы, просто удалите Dim PDFUserForm As UserForm.
Вам не нужно перебирать элементы управления? -> Dim shp As Control и For Each shp In Me.Controls
@JvdV Я только что отредактировал код и ошибку в своем посте :)
@ Therese FormControlType только для Shapes. Поскольку вы изменили его на Control, вы должны использовать If TypeName(shp) = "CheckBox" Then. Также рассмотрите возможность изменения имени переменной с shp на ctl, чтобы не запутаться в типе этой переменной.
@Pᴇʜ СПАСИБО :) теперь я получаю еще одну ошибку, см. мой отредактированный пост.
@Тереза, да ладно вам, вы должны начать исследовать и читать документацию. Я не могу исправить весь код для вас. Объект CheckBox не имеет .ControlFormat.


В какой строке ошибка? • Удалите
Dim x1TypePDF As Variantи заменитеType:=x1TypePDFнаType:=xlTypePDF. Обратите внимание, чтоxl— этоXLв нижнем регистре, а неX1. • Также по возможности избегайтеVariant, это наихудший тип, который вы можете выбрать:YYMM,Name_of_FileиNameмогут быть объявлены какString. • Поскольку вы используетеOption Explicit, ваш код должен выдавать ошибку, если вы не объявляетеi As Long. •Kunde_Arrayтакже не объявлен, так что очистите свои переменные и объявите все.