Formularze

Jak dodawać formularze?
Tego tutaj nie pokażę.
Coś innego przerobimy,
„Pasek postępu” obczaimy.

Excel progressbar

Public Sub progresBar(i As Long, status As String)

'i w naszym wypadku to procentowa wartość postępu (100% to zakończony proces)
'status to tekst, który pojawi się jako 'tytuł' formularza
'dodatkowo formularz posiada dla label o nazwie 'lblMessage wyświetli żądany string
'lblProgressbar to niebieski pasek na formularzu (label ze zmienionym kolorem na niebieski)
'trick polega na rozszerzaniu niebieskiego paska. 240 u mnie to 100%, bo taką szerokośc ma
'szary pasek o nazwie lblProgressBarConteiner ma za zadanie wizualizować postęp,
'a taką komendą wywołuje się 'repaint' formularza:
'call progresBar(liczba, tekst)

With F_ProgressBar
.Caption = status
.lblMessage = VBA.Format(i, "#.00") & "% Completed"
.lblProgressBar.Width = 240 / (100 / i)
.Repaint
End With

End Sub








Warto również mieć sprawdzenie,
Jak przebiega wychodzenie.

frm czerwony


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then 'ktoś zamknął formularz poprzez wciśnięcie krzyżyka
Cancel = True '' jeżeli wpiszemy cancel = True, to nie zamknie się formularz :), np można tak zrobić, gdy chcemy, aby był zamykany przycskiem, a nie krzyżykiem
MsgBox "użyj przycisku ""Cancel"" na formularzu w celu wyjścia"
End If

End Sub










Ciekawostek kilka dam,
By pokazać, mądrze, Wam,
Taby, ListView i labele,
Jeszcze inne, choć niewiele.
Komentarze dodam w kodzie,
Równowaga jest w przyrodzie.

user form
listbox


Private Sub UserForm_Initialize() '' rzeczy, które mają się dziać podczas włączania formularza
Dim sdsd
Dim col As Long
Dim ws As Worksheet

Set ws = ActiveSheet
Me.Label41.Caption = "Jakiś tekst"

Me.ListBox1.RowSource = ws.Name & "!" & "a2:d" & ws.Cells(ws.Rows.Count, "a").End (xlUp).Row ''zakres wyświetlanych wierszy w listbox, na obrazku są podkreślone ważne ustawienia, jak liststyle - 1 oznacza dodanie kolumny z checkboxami, multi - możliwość wyboru więcej niż
'na obrazku zaznaczone są dodatkowo obiekty 'frame' oraz 'multipage'

Set ws = Nothing

End Sub

Private Sub CommandButton1_Click()

Dim a As Long
For a = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(a) = True Then Call jakasprocedura(Me.ListBox1.List(a, 2)) ''list(a,2), podobnie jak w arkuszu wskaże nam komórkę w wierszu o indeksie "a", czyli od 0 do oporu, w kolumnie 2, można to podejrzeć w ten sposób:
debug.Print Me.ListBox1.List(a, 2)
Next

End Sub

Private Sub CommandButton1_Click()

If Me.OptionButton1.Value = True Then Call cośtamrób(Me.OptionButton1.Caption) 'jeżeli wciśnięty jest pierwszy przycisk opcji,
'to procedura cośtamrób zostanie wywołana z parametrem z jego tytułem
'podobnie działa toggleButton, z tą różnicą, że można ich zaznaczyć kilka, podczas gdy 'OptionButton'y zastępują się


End Sub