Hallo,
ich habe VBA mittlerweile aus Mangel an Anwendung ein wenig verlernt und hoffe, hier Hilfe zu bekommen.
In meiner Excel-Tabelle sind in einer Zeile Zahlen aufgeführt und in Spalten nach Kalenderwochen sortiert.
Nun möchte ich anhand von CommandButtons, das dem Anwender mit einem Klick auf die entsprechenden Buttons der Inhalt bestimmter Zellen angezeigt wird, und zwar immer von der aktuellen Kalenderwoche.
Ist das möglich?
Vielen Dank und Gruß
Marcel
So, ich habe mir selbst geholfen und einen Commandbutton erstellt, der eine Userform öffnet, dort sind 4 „Label“ enthalten und 4 Textboxen.
Wie kann ich nun den Inhalt einer Spalte, nämlich der aktuellen Kalenderwoche dort transferieren?
Gruß
Marcel
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
So, ich habe mir selbst geholfen und einen Commandbutton
erstellt, der eine Userform öffnet, dort sind 4 „Label“
enthalten und 4 Textboxen.
Wie kann ich nun den Inhalt einer Spalte, nämlich der
aktuellen Kalenderwoche dort transferieren?
Hallo,
nutze das Userform_Initialize-Ereignis, um die Textboxen vor dem Anzeigen des Formulars zu belegen.
Habe leider aus Deiner Fragestellung nicht so richtig entnehmen können, ob die Daten spalten- oder zeilenweise angeordnet sind. Deshalb mal ein Beispielcode für beide Varianten:
A B C D
1 Kalenderwoche Wert1 Wert2 Wert3
2 12 12 11 25
3 44 35 36 37
4 47 99 88 77
Code:
Private Sub UserForm\_Initialize()
Dim zeile As Double
Dim blatt As Worksheet
Set blatt = ThisWorkbook.Worksheets("Tabelle1")
With blatt
For zeile = 2 To .UsedRange.Rows.Count
If .Cells(zeile, 1).Value = CInt(Format(Now(), "ww")) Then
TextBox1.Value = .Cells(zeile, 2).Value
TextBox2.Value = .Cells(zeile, 3).Value
TextBox3.Value = .Cells(zeile, 4).Value
Exit For
End If
Next zeile
End With
End Sub
oder:
A B C D
1 Kalenderwoche 12 44 47
2 Wert1 12 35 99
3 Wert2 11 36 88
4 Wert3 25 37 77
Code:
Private Sub UserForm\_Initialize()
Dim spalte As Double
Dim blatt As Worksheet
Set blatt = ThisWorkbook.Worksheets("Tabelle1")
With blatt
For spalte = 2 To .UsedRange.Columns.Count
If .Cells(1, spalte).Value = CInt(Format(Now(), "ww")) Then
TextBox1.Value = .Cells(2, spalte).Value
TextBox2.Value = .Cells(3, spalte).Value
TextBox3.Value = .Cells(4, spalte).Value
Exit For
End If
Next spalte
End With
End Sub
Hoffe das hilft weiter.
Viele Grüße, tester!