Private Sub UserForm_Initialize()
' positioning http://www.vbaexpress.com/kb/getarticle.php?kb_id=382#instr
Me.StartUpPosition = 0
Me.Top = Application.Top + Application.Height - Me.Height - 45
Me.Left = Application.Left + Application.Width - Me.Width - 45
Dim p As String, f As String: Application.ScreenUpdating = False
p = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\": f = "ALL.xlsb"
If Dir(p & f) = "" Then
MsgBox "== File is missing ==": Exit Sub
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Extr p, f, "all", "A1:E30000"
With ThisWorkbook.Sheets(1)
.Columns(2).Replace 0, Empty, xlWhole
z = .Range("A2:E" & .Cells(Rows.Count, 2).End(xlUp).Row).Value
.[A:E].ClearContents
End With
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
tmp
End Sub
Посоветуйте, плиз, как можно было бы изменять значение переменнойp=... каким-либо из Control'ов на UserForm? CheckBox, ControlButton, ToggleButton, CommandButton. Смысл такой, что сейчас, при инициализации формы UserForm, ListBox заполняется данными из файла %desktop% / ALL.xlsb. У меня на Рабочем столе 2 идентичных файла - ALL.xlsb и ALL2.xlsb - с разными данными.
Хотелось бы реализовать переключение файла-источника из UserForm.
Ну судя по описанию - менять нужно не p, а f. Ну а реализовать можно всем из Вами названного. Нагляднее вероятно связанными чекбоксами, или как выше показал Ігор Гончаренко .