napisz kod VBA aby w arkuszu wybranym w combobox C_NN wypisać wszystkie dane z nie pustych komórek z zakresu od A2 do C100 i wyświetlić je w textbox o nazwie L_S w formie tabeli. Inicjacja nastąpi po wciśnięciu commandbox o nazwie H_S
Poniżej znajduje się kod VBA, który realizuje zadanie wyświetlenia danych z zakresu A2:C100
wybranego arkusza w kontrolce TextBox
o nazwie L_S
w formie tabeli. Inicjacja następuje po kliknięciu przycisku H_S
.
Private Sub H_S_Click()
Dim ws As Worksheet
Dim rng As Range
Dim row As Range
Dim outputText As String
Dim maxLengthA As Integer, maxLengthB As Integer, maxLengthC As Integer
' Sprawdzenie, czy wybrano arkusz w ComboBox
If C_NN.Value = "" Then
MsgBox "Proszę wybrać arkusz z listy!", vbExclamation
Exit Sub
End If
' Ustawienie wybranego arkusza
Set ws = ThisWorkbook.Worksheets(C_NN.Value)
' Ustawienie zakresu danych
Set rng = ws.Range("A2:C100")
' Znalezienie maksymalnej długości tekstu w każdej kolumnie
For Each row In rng.Rows
If Len(row.Cells(1, 1).Value) > maxLengthA Then maxLengthA = Len(row.Cells(1, 1).Value)
If Len(row.Cells(1, 2).Value) > maxLengthB Then maxLengthB = Len(row.Cells(1, 2).Value)
If Len(row.Cells(1, 3).Value) > maxLengthC Then maxLengthC = Len(row.Cells(1, 3).Value)
Next row
' Tworzenie nagłówka tabeli
outputText = "+ " & String(maxLengthA + 2, "-") & " + " & String(maxLengthB + 2, "-") & " + " & String(maxLengthC + 2, "-") & " +" & vbNewLine
outputText = outputText & "| " & PadRight("Kolumna A", maxLengthA) & " | " & PadRight("Kolumna B", maxLengthB) & " | " & PadRight("Kolumna C", maxLengthC) & " |" & vbNewLine
outputText = outputText & "+ " & String(maxLengthA + 2, "-") & " + " & String(maxLengthB + 2, "-") & " + " & String(maxLengthC + 2, "-") & " +" & vbNewLine
' Przetwarzanie danych i tworzenie wierszy tabeli
For Each row In rng.Rows
If Not IsEmpty(row.Cells(1, 1)) Or Not IsEmpty(row.Cells(1, 2)) Or Not IsEmpty(row.Cells(1, 3)) Then
outputText = outputText & "| " & PadRight(row.Cells(1, 1).Value, maxLengthA) & " | " & _
PadRight(row.Cells(1, 2).Value, maxLengthB) & " | " & _
PadRight(row.Cells(1, 3).Value, maxLengthC) & " |" & vbNewLine
End If
Next row
' Dodanie dolnej krawędzi tabeli
outputText = outputText & "+ " & String(maxLengthA + 2, "-") & " + " & String(maxLengthB + 2, "-") & " + " & String(maxLengthC + 2, "-") & " +"
' Wyświetlenie wyników w TextBox
L_S.Text = outputText
End Sub
' Funkcja pomocnicza do wyrównywania tekstu
Function PadRight(str As String, length As Integer) As String
PadRight = str & Space(length - Len(str))
End Function
ComboBox
:Private Sub UserForm_Initialize()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
C_NN.AddItem ws.Name
Next ws
End Sub
ComboBox
do wyboru arkusza jest standardową praktyką w VBA, co zwiększa elastyczność aplikacji.PadRight
: Służy do wyrównywania tekstu w kolumnach, dodając odpowiednią liczbę spacji.TextBox
ma włączoną opcję MultiLine
, aby poprawnie wyświetlać wielowierszowy tekst.A2:C100
można dostosować do własnych potrzeb, zmieniając wartości w Set rng
.TextBox
.Kod VBA umożliwia dynamiczne wyświetlanie danych z wybranego arkusza w formie tabeli w kontrolce TextBox
. Uwzględnia wyrównanie kolumn, obsługę pustych komórek oraz dynamiczne dopasowanie szerokości tabeli. Jest to elastyczne i czytelne rozwiązanie, które można łatwo dostosować do własnych potrzeb.