Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
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

Code in Userform

Code in Userform
07.10.2020 20:21:18
Richi
Hallo Zusammen
Ich komme mit meinem Code nicht mehr weiter. Der erste Teil (nicht sehr effizient geschrieben..langsam) funktioniert bis zu For i to..
Habe in Userform Namen 1:30 und pro Name Daten Gruppierungen 1:3. Jede Daten Grupierung soll auf Inhalt geprüft und danach in Tabelle auf eine neue Zeile geschrieben werden.
Stehe an:
- Mit der oder Abfrage
- Bin mir nicht sicher ob meine Formel zur Eruierung der Textboxbezeichnungen stimmt um deren Inhalt in Tabelle zu schreiben.
Kann mir da jemand von euch Helfen?
Liebe Gruess
Richi
Private Sub cmd_Erfassen_Click()
Dim wb As Workbook
Dim wsH As Worksheet                                               'Hilfsdaten
Dim wsD As Worksheet                                               'Daten
Dim i As Integer
Dim s As Integer
Dim last As Integer
Set wb = ThisWorkbook
Set wsH = wb.Worksheets("Hilfsdaten")
Set wsD = wb.Worksheets("Daten")
last = wsD.Cells(Rows.Count, 1).End(xlUp).Row + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Zottel"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_1.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_V_5_1.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_V_5_1.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_V_5_1.Value
wsD.Cells(last, 7).Value = "Vormittag"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.ZottelV.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Zottel"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_1.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_M_5_1.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_M_5_1.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_M_5_1.Value
wsD.Cells(last, 7).Value = "Mittagessen"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.ZottelM.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Zottel"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_1.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_N_5_1.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_N_5_1.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_N_5_1.Value
wsD.Cells(last, 7).Value = "Nachmittag"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.ZottelN.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Teddy"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_2.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_V_5_2.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_V_5_2.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_V_5_2.Value
wsD.Cells(last, 7).Value = "Vormittag"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.TeddyV.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Teddy"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_2.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_M_5_2.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_M_5_2.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_M_5_2.Value
wsD.Cells(last, 7).Value = "Mittagessen"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.TeddyM.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Teddy"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_2.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_N_5_2.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_N_5_2.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_N_5_2.Value
wsD.Cells(last, 7).Value = "Nachmittag"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.TeddyN.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Brumm"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_3.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_V_5_3.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_V_5_3.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_V_5_3.Value
wsD.Cells(last, 7).Value = "Vormittag"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.BrummV.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Brumm"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_3.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_M_5_3.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_M_5_3.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_M_5_3.Value
wsD.Cells(last, 7).Value = "Mittagessen"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.BrummM.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Brumm"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_3.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_N_5_3.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_N_5_3.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_N_5_3.Value
wsD.Cells(last, 7).Value = "Nachmittag"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.BrummN.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Wald"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_4.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_V_5_4.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_V_5_4.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_V_5_4.Value
wsD.Cells(last, 7).Value = "Vormittag"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.WaldV.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Wald"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_4.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_M_5_4.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_M_5_4.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_M_5_4.Value
wsD.Cells(last, 7).Value = "Mittagessen"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.WaldM.Value
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Kinder Wald"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_5_4.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_N_5_4.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_N_5_4.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_N_5_4.Value
wsD.Cells(last, 7).Value = "Nachmittag"
wsD.Cells(last, 9).Value = Uf_Neuerfassung.WaldN.Value
If Uf_Neuerfassung.Block_4_1.Value  "" Then
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Schulferien"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_4_1.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_4_1.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_4_1.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_4_1.Value
wsD.Cells(last, 7).Value = Uf_Neuerfassung.Info_Schule.Value
End If
If Uf_Neuerfassung.Block_4_2.Value  "" Then
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Feiertage"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_4_2.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_4_2.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_4_2.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_4_2.Value
wsD.Cells(last, 7).Value = Uf_Neuerfassung.Info_Feier.Value
End If
If Uf_Neuerfassung.Block_4_3.Value  "" Then
last = last + 1
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = "Betriebsferien"
wsD.Cells(last, 3).Value = Uf_Neuerfassung.Gruppe_4_3.Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.Block_4_3.Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.Zeit_von_4_3.Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.Zeit_bis_4_3.Value
wsD.Cells(last, 7).Value = Uf_Neuerfassung.Info_4_3.Value
End If
For i = 1 To 30
If Me.Controls("Name_" & i).Value  "" Then
last = last + 1
For s = 1 To 3
If Uf_Neuerfassung.me.Controls("Block_" & i & "_" & s).Value  "" Or  _
Uf_Neuerfassung.me.Controls("Zeit_von_" & i & "_" & s).Value  "" Then
wsD.Cells(last, 1).Value = Uf_Neuerfassung.Planungstag.Value
wsD.Cells(last, 2).Value = Uf_Neuerfassung.me.Controls("Name_" & i).Value
wsD.Cells(last, 3).Value = Uf_Neuerfassung.me.Controls("Gruppe_" & i & "_" & _
s).Value
wsD.Cells(last, 4).Value = Uf_Neuerfassung.me.Controls("Block_" & i & "_" &  _
s).Value
wsD.Cells(last, 5).Value = Uf_Neuerfassung.me.Controls("Zeit_von_" & i & "_" _
& s).Value
wsD.Cells(last, 6).Value = Uf_Neuerfassung.me.Controls("Zeit_bis_" & i & "_" _
& s).Value
wsD.Cells(last, 7).Value = Uf_Neuerfassung.me.Controls("Info_" & i & "_" &  _
s).Value
last = last + 1
End If
Next s
End If
last = last - 1
Next i
'Call Sortierung
End Sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code in Userform
07.10.2020 22:14:16
Frank
Hallo Richi,
so ganz verstehe ich das nicht. Ich nehme mal an, dass Uf_Neuerfassung der Name der Userform ist. Warum schreibst Du im ersten, langen Teil des Codes stattdessen nicht einfach Me? Das ist doch das Form-Object. In der for-i-Schleife steht Uf-Neuerassung.me.Controls. Das ist glaube ich nicht richtig (das me ist klein geblieben) und müsste doch eigentlich nur Me.Controls heißen.
Viele Grüße
Frank
AW: Code in Userform
07.10.2020 22:56:35
Richi
Hallo Frank
Danke für deinen Input. Habs geändert und nichts ging mehr beim ersten Teil.
For i ...Part habe ich di Uf_Neuerfassung rausgenommen ausser bei Planungstag. Zumindest habe ich jetzt ein paar Daten in Tabelle, jedoch völlig in der falschen Sequenz. Da stimmen die Namensreferenzen nicht.
Anzeige
AW: Code in Userform
08.10.2020 05:20:36
Hajo_Zi
frage jemand der neben Dir sitzt der sieht die Datei.
Die meisten hier sehen Sie nicht.
Da Sie nicht auf Deinen Rechner schauen.
Vielleicht sollte die Datei verlinkt werden?
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten ändern. Schaue Datei
http://hajo-excel.de/gepackt/fremd/Datei_verschluesseln.zip
Das ist nur meine Meinung zu dem Thema.

Anzeige
AW: Code in Userform
08.10.2020 10:33:09
Frank
Hallo Richi,
wie ist denn Dein Formular aufgebaut? Benutzt Du dort »Multiseiten«? Hast Du es schon mit Me.Uf_Neuerfassung probiert?
Viele Grüße
Frank
AW: Code in Userform
08.10.2020 11:17:22
Frank
Wenn Uf_Neuerfassung der Name Deiner Userform ist, kann eigentlich weder Uf_Neuerfassung.Me noch Me.Uf_Neuerfassung funktionieren, denn das wäre doppelt gemoppelt. Me und Uf_Neuerfassung sind hier ja dasselbe Object. Eigentlich solltest Du dann eine Error-Meldung kriegen.
Mehr fällt mir dazu im Augenblick nicht ein.
AW: Code in Userform
08.10.2020 12:20:05
Richi
Hallo Frank & Hajo
Vorweg, Danke für eure Antworten im Vorfeld.
Ich hab ein File zusammengestellt sieht fast gleich aus einfach mit weniger Daten jedoch das Thema ist das Selbe. Der relevante Code ist der Selbe.
Was will ich:
Ist der Name leer soll nichts geschrieben werden (über die ganze Linie, alle 3 Gruppierungen). Das versuche ich mit For i = 1 to 4 zu lösen.
Ist der Name nicht leer muss in Grp und Blk oder Zeit_von ein Eintrag hinterlegt sein. Diese Prüfung versuche ich mit (über jede Gruppierung) For s = 1 to 3 zu bewerkstelligen.
Die Integer von i & s sollen die Referenzen sein um meine Textboxen anzusteuern.
Da steh ich an. Mein Code macht nicht das was ich möchte und ich komm nicht drauf woran es liegt.
Hoffe ich konnte mein Vorhaben klar beschreiben.
Liebe Gruess Richi
https://www.herber.de/bbs/user/140726.xlsm
Anzeige
AW: Code in Userform
08.10.2020 16:09:17
Frank
Hallo Richi,
Du hast bei den Contros-Namen i und s verwechselt.
So funktioniert's:

For i = 1 To 4
If Me.Controls("Name_" & i).Value  "" Then
last = last + 1
For s = 1 To 3
If Me.Controls("Block_" & s & "_" & i).Value  "" Or _
Me.Controls("Zeit_von_" & s & "_" & i).Value  "" Then
wsD.Cells(last, 1).Value = Me.Controls("Name_" & i).Value
wsD.Cells(last, 2).Value = Me.Controls("Gruppe_" & s & "_" & i).Value
wsD.Cells(last, 3).Value = Me.Controls("Block_" & s & "_" & i).Value
wsD.Cells(last, 4).Value = Me.Controls("Zeit_von_" & s & "_" & i).Value
wsD.Cells(last, 5).Value = Me.Controls("Zeit_bis_" & s & "_" & i).Value
last = last + 1
End If
Next s
End If
last = last - 1
Next i
End Sub

Viele Grüße
Frank
Anzeige
AW: Code in Userform
08.10.2020 17:17:29
Frank
So ist es vielleicht noch ein bisschen »eleganter«

Private Sub cmb_erfassen_Click()
Dim wsD As Worksheet: Set wsD = ThisWorkbook.Worksheets("Tabelle1")
Dim last As Integer: last = wsD.Cells(Rows.Count, 1).End(xlUp).Row + 1
Dim i As Integer, s As Integer
Dim b As Variant: b = Array("Name_", "Gruppe_", "Block_", "Zeit_von_", "Zeit_bis_")
Dim c As Long, n As String
With Me.Controls
For i = 1 To 4
If .Item("Name_" & i).Value  "" Then
last = last + 1
For s = 1 To 3
If .Item("Block_" & s & "_" & i).Value  "" _
Or .Item("Zeit_von_" & s & "_" & i).Value  "" Then
For c = 0 To 4
If c = 0 Then n = b(0) & i Else n = b(c) & s & "_" & i
wsD.Cells(last, c + 1).Value = .Item(n)
Next c
last = last + 1
End If
Next s
End If
last = last - 1
Next i
End With
End Sub

Anzeige
AW: Code in Userform
08.10.2020 19:16:28
Richi
Hallo Frank
Hab deinen Code übernommen noch zum bestehenden File Zeilen und Spalten Intervalle angepass und das Programm läuft. Herzlichen Dank dafür.
Etwas hab ich dennoch festgestellt. Zeit von / bis gebe ich in den andern Felder numerisch heraus und mit neuem Code erfolgt die Ausgabe als Text. Hat sicher was mit der m Array Definition zu tun. Kann ich da was Anpassen?
Liebe Gruess Richi
Code sieht jetzt bei mir so aus:
With Me.Controls
For i = 1 To 30 'Zähler Anzahl Eingabezeilen
If .Item("Name_" & i).Value "" Then 'Wenn im Feld Name etwas steht
last = last + 1
For s = 1 To 3 'Zähler Anzahl Gruppierungsblöcke
If .Item("Block_" & s & "_" & i).Value "" _
Or .Item("Zeit_von_" & s & "_" & i).Value "" Then 'Wenn im Feld Bock oder Zeit_von steht
For c = 0 To 5 'Zähler Positionierung Spalteneinträge
If c = 0 Then n = b(0) & i Else n = b(c) & s & "_" & i
wsD.Cells(last, 1).Value = .Item("Planungstag").Value
wsD.Cells(last, c + 2).Value = .Item(n)
Next c
last = last + 1 'Spaltenerhöhung um 1
End If
Next s
End If
last = last - 1 'Letzte Spaltenerhöhung rückgängig zu machen
Next i
End With
Anzeige
AW: Code in Userform
08.10.2020 20:18:00
Frank
Also...
1.
In der mir vorliegenden Beispiel-Datei gibt's in der UserForm kein Feld Planungstag und ich erhalte dementsprechend eine Fehlermeldung.
2.
For c = 0 to 5 ist nicht nur der Zähler zur Positionierung der Spalteneinträge in der Tabelle (Spalte 1 bis 5), sondern gleichzeitig auch der Index für das Array b (0 bis 4). Weil bei den Spalten bei 1 begonnen wird und bei den Indizes bei 0 und die Schleife ebenfalls mit 0 beginnt, muss bei der Zuweisung
wsD.Cells(last, c + 1).Value = .Item(n) immer 1 dazugezählt werden. Was ist Planungstag denn eigentlich, wo kommt es her und wo soll es in Deiner Tabelle auftauchen? Und wie sieht jetzt das b = Array(…) aus?
3.
Das löst jetzt allerdings noch nicht Dein Proplem bei der Zahl/Text-Formatierung. Vielleicht liegt es daran, dass es eigentlich wsD.Cells(last, c + 1).Value = .Item(n).Value heißen muss. Ich hatte das übersehen.
Anzeige
AW: Code in Userform
08.10.2020 20:35:39
Richi
Jetzt kann ich endlich die Original-Datei hochladen.
Das Planungsdatum ist die Basis für alle Einträge in der Tabelle. Die ziehe ich für jeden Eintrag vom gleichen Ort.
Final wenn die ganze Dateneingabe einwandfrei läuft werde ich die Daten über einen Planungsspiegel wie MS Projekt darstellen. Dieses Programm besteht bereits.
Ich Danke dir sehr für deine Hilfe. Dieses Userform ist das erste das ich mache. Habe in vielen Youtub Filmen und mit Nachfrage die ganzen Codes zusammengestellt. Ich hoffe du kriegst nicht gleich einen Schlaganfall :-). Besser kann ich es leider noch nicht......
https://www.herber.de/bbs/user/140742.xlsm
Anzeige
AW: Code in Userform
09.10.2020 02:12:26
Frank
Hallo Richi,
habe mir noch Deine Original-Datei angeschaut. Ist ja recht umfangreich. Ich konzentriere mich jetzt nur auf den besagten Teil für die Übertragung der Daten von der Form in die Tabelle Daten. Da die Tabellenspalten unterschiedliche Formate haben, bringt die for c Schleife von meinem Vorschlag hier nichts. Deshalb habe ich sie sowie das Array b wieder rausgeschmissen und wieder wie in Deiner alten Version die Spalten einzeln behandelt. Den Planungstag verwandle ich ins Date-Format. Die Tabellenspalten Zeit_Von und Zeit_Bis sind bisher Standard formatiert. Das würde ich ins Datum/Zeit-Format h:mm ändern. Damit aus Deinen »Zeitzahlen« aus der Form Excel-Zeit-Werte in der Tabelle werden, habe ich eine Hilfs-Function ZzzD eingesetzt.
 

Dim si As String
With Me.Controls
For i = 1 To 30
If .Item("Name_" & i).Value  "" Then
last = last + 1
For s = 1 To 3
si = s & "_" & i ' damit sieht's folgend übersichtlicher aus
If .Item("Block_" & si).Value  "" _
Or .Item("Zeit_von_" & si).Value  "" Then
wsD.Cells(last, 1).Value = CDate(.Item("Planungstag").Value)
wsD.Cells(last, 2).Value = .Item("Name_" & i).Value
wsD.Cells(last, 3).Value = .Item("Gruppe_" & si).Value
wsD.Cells(last, 4).Value = .Item("Block_" & si).Value
wsD.Cells(last, 5).Value = ZzzD(.Item("Zeit_von_" & si).Value)
wsD.Cells(last, 6).Value = ZzzD(.Item("Zeit_bis_" & si).Value)
wsD.Cells(last, 7).Value = .Item("Info_" & si).Value
last = last + 1
End If
Next s
End If
last = last - 1
Next i
End With
Sortierung
End Sub
' Hilfs-Funktion Zeitzahl-zu-Date
' Wandelt eine »Zeitzahl« wie 700 in das Date-Format um.
' Wenn die Zielzelle das Zahlenformat h:mm hat, wird dort
' dann z.B. 7:00 angezeigt. Wenn die Zahl ungültig ist,
' wird Empty zurückgegeben, d.h. die Zelle wird leer.
Public Function ZzzD(ByVal z As Variant) As Variant
If IsNumeric(z) Then
z = CLng(z)
If z >= 0 And z 

Ausprobiert habe ich das ganze nicht – außer ZzzD. Die .Value bei .Cells(…) und .Item(…) kann man glaub ich noch weglassen, weil das die Default-Properties von Cells und Control.Item sind.
Obwohl ich das ganze recht interessant finde, kann ich mich auch nicht viel mehr reinknien, weil mir dazu einfach die Zeit fehlt.
Du hast Dir da eine ganze Menge vorgenommen. Ich habe mal Wartungspläne für eine Firma entworfen – eine recht ähnliche Aufgabe, auch vom Umfang her. Zuerst wollte ich auch Userforms dafür einsetzen, bin aber wieder davon abgekommen, weil es programmtechnisch viel komfortabler ist, stattdessen ein Tabellenblatt zu benutzen. Und es geht auch schneller, es zu entwerfen (und der Kunde freut sich). Dort kannst Du Zell-Funktionen einsetzen, ohne großen Aufwand Sachen verschieben und Neues einfügen. Ist einfach viel pflegeleichter. Man muss zwar sein Spalten-Raster gut planen, aber mit Zellen verbinden, Zellen schützen und geschicktem grafischen Layout kann man aus einem Arbeitsblatt eine Eingabeseite machen, die einer Userform nur wenig, wenn überhaupt, nachsteht. Über die »Datenüberprüfung« (Dropdown-Icon im Excel Menü [Daten] > [Datentools]) kann man sogar DropDown-Vorschlags-Felder einfügen. Mit Worksheet_Change und Worksheet_SelectionChange Events hat man außerdem eine sofortige Kontrolle über das, was der User macht.
Ich wünsche Dir jedenfalls viel Erfolg. Ich bin leider nur ab und zu hier, werde Dein Projekt aber gern im Auge behalten.
Viele Grüße
Frank
Anzeige
AW: Code in Userform
08.10.2020 10:41:49
Frank
Sind .Cells(last, c) vielleicht Mitglieder verbundener Zellen? Dann müsste es .Cells(last, c).MergeArea.Cells(1) heißen.
Wie äußert sich der Fehler denn genau, was passiert?
AW: Code in Userform
08.10.2020 10:55:00
Frank
In der äußeren Schleife läuft i von 1 bis 30. In der inneren Schleife referenzierst Du dann Controls beispielsweise mit Block_22_2. Gibts diese Controls überhaupt? Im ersten Teil sehe ich die nicht.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige