Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellen bestimmen, die sich immer ändern

Zellen bestimmen, die sich immer ändern
25.02.2020 14:59:32
Knolle
Hallo zusammen,
Ich habe in Zeile 12 von Spalte R bis NT alle Daten (Datum) des Jahres eingetragen (01.01 - 12.12).
In den Zeilen davor sind Personendaten wie Name und E-Mail eingetragen.
In der Zeile in der eine Person steht, kann eine "1" in eine Zelle unter einem Datum geschrieben werden, was bedeuted, dass an diesem Tag der beantragte Urlaub genehmigt ist.
In einer UserForm wähle ich jetzt eine Abteilung und eine Person die in der Abteilung arbeitet, was funktioniert. Jetzt möchte ich für die ausgewählte Person, in einer TextBox, jedes Datum angezeigt bekommen, für das eine "1" gesetzt wurde.
Ich hoffe dabei kann mir jemand helfen.
Danke

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen bestimmen, die sich immer ändern
25.02.2020 15:26:01
Klexy
For Each Datum in Datumszeile
If Wert darüber = Personenname And Wert darunter = 1 Then
Text = Text & vbcr & Format(Datumszelle, "ddd.mm.yyyy")
End If
Msgbox Text
Ergänzung
25.02.2020 15:27:29
Klexy
Sorry:
zwischen "End If" und "Msgbox Text" muss noch "Next Datum"
AW: Zellen bestimmen, die sich immer ändern
25.02.2020 15:52:42
Knolle
Danke für die Antwort. Muss ich Wert darüber und wert darunter noch als Variable deklarieren oder was ist damit gemeint? Mit Text = ... ist denke ich meine TextBox gemeint in die ich die verschiedenen Daten will?
AW: Zellen bestimmen, die sich immer ändern
25.02.2020 16:29:45
Klexy
Muss keine Variable sein. Datum.Offset(-1, 0) reicht vollkommen.
Aber die Datumszeile sollte als Variable (Range) erstmal definiert werden.
Mit Text ist der Text gemeint, der dann in der MsgBox ausgegeben wird.
Anzeige
AW: Zellen bestimmen, die sich immer ändern
25.02.2020 16:52:38
Knolle
Von der Datumzeile ist aber, je nachdem welchen Mitarbeiter ich ausgewählt habe, immer eine andere Zeile anzusprechen, weshalb ich nicht mit Offset arbeiten kann. Oder liege ich da falsch? Angenommen ich trage bei einem Mitarbeiter in Zeile 49 eine 1 in Spalte R49 ein. Dann möchte ich, dass das Datum, welches in Spalte R12 steht, in eine TextBox der UserForm eingetragen wird. Für jede 1 die in dieser Zeile steht soll das Datum in die gleiche TextBox eingetragen werden. Ich hoffe ich drücke mein Problem verständlich aus.
AW: Zellen bestimmen, die sich immer ändern
25.02.2020 17:23:47
Klexy
Merksatz: Eine Musterdatei sagt mehr als 1000 Worte.
In deinem ersten Post hast du das anders dargestellt.
Und es ist auch nicht die Datum-Zeile, die du dann durchgehen willst, sondern die Mitarbeiter-Zeile
Also: Cells(12, Mitarbeiter.Column) für die Referenz aufs Datum
Und die Zeile, die du durchsuchst, kannst du ja über die aktuell selektierte Zelle definieren, wenn du den Mitarbeiternamen markiert hast:
Set MitarbeiterZeile = Range(Cells(ActiveCell.Row, 18), Cells(ActiveCell.Row, 383))
For each Mitarbeiter in MitarbeiterZeile
If Mitarbeiter = 1 Then
Text = Text & vbcr & Format(Cells(12, Mitarbeiter.Column), "dd.mm.yyyy")
End If
Next Mitarbeiter
Msgbox Text
Wobei 18 die Spalte R und 383 die Spalte NS ist (NT wäre dann schon wieder der 1. Januar, in einem Nicht-Schaltjahr schon der 2. Januar)
Anzeige
AW: Zellen bestimmen, die sich immer ändern
26.02.2020 15:10:41
Knolle
Danke! Ich habe den Code so geändert, dass das Datum in der TextBox meiner UserForm ausgegeben _ wird. Hier der restliche Code der UserForm. Wie kann ich jetzt genau die Zeile durchsuchen, die ich in der Combobox_Mitarbeiter auswähle? Also mit meiner Variabloe "suchen". Und ich bekomme jetzt in der TextBox nur ein Datum angezeit, obwohl ich mehrere 1 in der Zeile habe. Gibt es dafür eine Lösung?

Private Sub Combobox_Mitarbeiter_Change()
Dim Mitarbeiter As Object
Dim MitarbeiterZeile As Range
Worksheets("2020").Activate
Set suchen = Columns(4).Find(what:=ComboBox_Mitarbeiter.Text)
TextBox_Mail = suchen.Offset(0, 2).Text 'Mail in Textbox
TextBox_Vorname = suchen.Offset(0, -1).Text 'Vorname in Textbox
'Datum vom genehmigtem Urlaub in Textbox
Worksheets("Urlaubsbestätigung").Range("B20:H29") = ""
Set MitarbeiterZeile = Range(Cells(ActiveCell.Row, 18), Cells(ActiveCell.Row, 383))
For each Mitarbeiter in MitarbeiterZeile
If Mitarbeiter = 1 Then
TextBox_Urlaub = Format(Cells(12, Mitarbeiter.Column), "dd.mm.yyyy")
End If
Next Mitarbeiter 

Anzeige
AW: Gelöst
26.02.2020 15:58:46
Knolle
Hier meine Lösung:

Private Sub Combobox_Mitarbeiter_Change()
Dim Urlaub As Object
Dim MitarbeiterZeile As Range
Dim s As String
Worksheets("2020").Activate
Set suchen = Columns(4).Find(what:=ComboBox_Mitarbeiter.Text)
TextBox_Mail = suchen.Offset(0, 2).Text 'Mail in Textbox
TextBox_Vorname = suchen.Offset(0, -1).Text 'Vorname in Textbox
'Datum vom genehmigtem Urlaub in Textbox
Set MitarbeiterZeile = Range(Cells(suchen.Row, 18), Cells(suchen.Row, 383))
For Each Urlaub In MitarbeiterZeile
If Urlaub = 1 Then
s = s & vbCrLf & Format(Cells(12, Urlaub.Column), "dd.mm.yyyy")
End If
Next Urlaub
UserForm_Benachrichtigung.TextBox_Urlaub.Text = s
End Sub

Anzeige
AW: Gelöst
27.02.2020 07:41:07
Klexy
Genau. Erst alle in einer Schleife sammeln.
Aber vor allem: siehe Merksatz!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige