Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
840to844
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
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

in VBA sortieren

in VBA sortieren
30.01.2007 14:34:09
sonja.ausHH
Hallo,
erst noch einmal Dank an Peter Feustel für den VBA-Code.
Mit dem folgenden VBA-Code wird die Eingabe aus einer Userform in die unten Abgebildete Tabelle in das Arbeitsblatt "MA" eingefügt, so das die Tabelle immer, je Mitarbeiter, sortiert nach Datum ist.
Also immer Urlaub "von bis" mit dem Zusatz "U" dazwieschen für Urlaub, oder Zusatz "S" dazwieschen für Sonderurlaub...usw.
Leider funktioniert die ganze Sache nicht wenn Daten gelöscht oder geändert werden. Doppelte Eingabe wird auch übernommen, soll so aber nicht sein.
Kann da jemand helfen?
schon einmal Danke
sonja.ausHH

'   die Eingaben in das Tabellenblatt MA eintragen

'

   With Worksheets("MA").Range("A1:A500")

      Set rZelle = .Find(ComboBox1.List(ComboBox1.ListIndex, 0), _

         LookIn:=xlValues, LookAt:=xlWhole)

      If rZelle Is Nothing Then

         MsgBox "den Mitarbeiter  " & ComboBox1.List(ComboBox1.ListIndex, 0) & _

            "  gibt es nicht im Tabellenblatt ""MA"".", _

            48, "   Hinweis für " & Application.UserName

         Exit Sub

      End If

      iZeile_M = rZelle.Row                              ' Fundzeile des Mitarbeiters

      iLSpalte = IIf(.Cells(iZeile_M, 256) <> "", 256, _

         .Cells(iZeile_M, 256).End(xlToLeft).Column)     ' letzte belegte Spalte



      iAnzTerm = ((iLSpalte + 1 - 2) / 4)   ' die Anzahl der Termine errechnen

      ReDim aTermine(iAnzTerm)              ' den Array entsprechend dimensionieren



      If iLSpalte < 5 Then iLSpalte = 5     ' kein Termin eingetragen !

'

'      die Termine des Mitarbeiters abarbeiten, dabei den neuen Termin

'      sortiert nach Datum einfügen

'

      For iSpalte = 3 To (iLSpalte + 1) Step 4

         If IsDate(.Cells(iZeile_M, iSpalte).Value) Then

            If CDate(TextBox1.Text) < .Cells(iZeile_M, iSpalte).Value Then

               aTermine(iIndex).DatumV = CDate(TextBox1.Text)

               aTermine(iIndex).Art = TextBox3.Value

               aTermine(iIndex).DatumB = CDate(TextBox2.Text)

               aTermine(iIndex + 1).DatumV = CDate(.Cells(iZeile_M, iSpalte).Value)

               aTermine(iIndex + 1).Art = .Cells(iZeile_M, iSpalte + 1).Value

               aTermine(iIndex + 1).DatumB = CDate(.Cells(iZeile_M, iSpalte + 2).Value)

             Else

               aTermine(iIndex).DatumV = CDate(.Cells(iZeile_M, iSpalte).Value)

               aTermine(iIndex).Art = .Cells(iZeile_M, iSpalte + 1).Value

               aTermine(iIndex).DatumB = CDate(.Cells(iZeile_M, iSpalte + 2).Value)

               aTermine(iIndex + 1).DatumV = CDate(TextBox1.Text)

               aTermine(iIndex + 1).Art = TextBox3.Value

               aTermine(iIndex + 1).DatumB = CDate(TextBox2.Text)

            End If

          Else

            aTermine(iIndex).DatumV = CDate(TextBox1.Text)

            aTermine(iIndex).Art = TextBox3.Value

            aTermine(iIndex).DatumB = CDate(TextBox2.Text)

         End If

         iIndex = iIndex + 1

      Next iSpalte

                                        ' die alten Termine alle löschen

      .Range(.Cells(iZeile_M, 3), .Cells(iZeile_M, iLSpalte)).ClearContents

      iSpalte = 3                       ' Start-Spalte ist C

'

'      die Termine sortiert aus dem Array in das Tabellenblatt übernehmen

'

      For iIndex = LBound(aTermine) To UBound(aTermine)

         .Cells(iZeile_M, iSpalte + 0).Value = aTermine(iIndex).DatumV

         .Cells(iZeile_M, iSpalte + 1).Value = aTermine(iIndex).Art

         .Cells(iZeile_M, iSpalte + 2).Value = aTermine(iIndex).DatumB

         iSpalte = iSpalte + 4

      Next iIndex

   End With



Exit Sub








12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in VBA sortieren
01.02.2007 21:20:02
Peter
Hallo Sonja,
sieh dir die beigefügte Mappe an, ich hoffe, so kannst du damit arbeiten.
https://www.herber.de/bbs/user/40077.xls
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: in VBA sortieren
02.02.2007 02:29:35
sonja.ausHH
Hallo Peter,
Danke dass Du mir noch weiter helfen willst.
Ich hoffe Du hast nicht schon wieder zuviel von Deiner Freizeit geopfert.
Noch zwei kleine Fehler hab ich festgestellt.
1.)Wenn der Mitarbeiter noch keinen Eintrag hat und man geht auf "ändern" oder "löschen" dann kommt es zur Fehlermeldung.
2.)Wenn ein Eintrag gelöscht wird, dann wird öfters, nicht immer, der letzte Eintrag doppelt eingetragen.
Eintragen klappt wunderbar, auch das Eintragen und Löschen in "Urlaub" funktioniert.
Termine einfügen geht auch.
Danke, schönen Tag
sonja.ausHH
Anzeige
AW: in VBA sortieren
02.02.2007 09:31:56
Peter
Hallo Sonja,
da sich niemand auf deine Anfrage gemeldet hat, habe ich mich noch einmal an dein 'Sorgenkind' gemacht.
Schau dir die etwas geänderte Version an, das doppelte Vorkommen von Einträgen sollte hoffentlich behoben sein.
Wo meinst du Probleme zu haben bei "Wenn der Mitarbeiter noch keinen Eintrag hat und man geht auf "ändern" oder "löschen" dann kommt es zur Fehlermeldung."
Bei mir wird eine MsgBox geöffnet, die sagt, den MA gibt es nicht.
https://www.herber.de/bbs/user/40086.xls
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: in VBA sortieren
02.02.2007 20:10:59
sonja.ausHH
Hallo Peter,
Ja, die doppelten Einträge sind jetzt weg, Danke.
Mit, "Wenn der Mitarbeiter noch keinen Eintrag hat und man geht auf "ändern" oder "löschen" dann kommt es zur Fehlermeldung.",
war gemeint, der Mitarbeiter ist schon in der Liste, aber er hat noch keinen Urlaubseintrag.
Ich habe mich in den letzten Tagen versucht etwas in VBA einzuarbeiten und habe mich dank Deiner guten Zeilenkommentare sehr gut in Deinen Code einlesen können.
In etwa weis ich jetzt was da so passiert und konnte den Fehler selbst beheben.
In "UserForm2" Habe ich "If iLSpalte = 1 Then GoTo Fehler........ Fehler: MsgBox "Noch kein Eintrag"" eingefügt. Und es klappt
Natürlich komme ich bei den meisten Sachen gar nicht mit und bewundere Dich für Dein können.
Jetzt klappt erstmal alles reibungslos.
Ich danke Dir nochmals für Dein Engagement.
Falls es unerwartet doch nochmal zu Problemen kommen sollte, darf ich Dich dann hier im Forum nochmals ansprechen ?
schönes Wochenende
sonja.ausHH
Anzeige
AW: in VBA sortieren
02.02.2007 15:55:01
Peter
Hallo Sonja,
hier noch eine Version, mit erweiterter Änderungs-Message bzw. auch da der Möglichkeit noch abzubrechen.
https://www.herber.de/bbs/user/40101.xls
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: in VBA sortieren
02.02.2007 20:17:28
sonja.ausHH
Hallo Peter,
dise neue Version hatte ich voher gar nicht gesehen.
Werd ich mal schauen.
Danke
schönes Wochenende
sonja.ausHH
AW: in VBA sortieren
02.02.2007 20:33:05
sonja.ausHH
Hallo Peter,
bitte meine Antwort von 20:10:59 lesen.
schönes Wochenende
sonja.ausHH
AW: in VBA sortieren
02.02.2007 21:27:44
Peter
Hallo Sonja,
das war ein Test, der mir 'durch die Lappen' gegangen ist.
Das ist mit der beigefügten Version (und durch deine Initiative ja auch bereits)
behoben.
Selbstverständlich kannst du jederzeit mit 'Sorgen und Problemen' kommen.
https://www.herber.de/bbs/user/40106.xls
Auch dir ein schönes Wochenende
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: mehr Doku, mehr Komfort
03.02.2007 20:43:05
Peter
Hallo Sonja,
hier noch ein wenig mehr Dokumentation der Makros sowie ein etwas komfortablerer Ablauf beim Ändern eines Termins.
Dabei ist die Mappe größer als 300 KB geworden.
Wenn du interessiert bist, gib mir diene E-Mail Adresse.
Viele Grüße Peter
AW: mehr Doku, mehr Komfort
03.02.2007 22:51:43
sonja.ausHH
Hallo Peter,
na sicher bin ich interessiert, aber meine E-Mail Adresse kann ich doch hier nicht preisgeben.
Spam bekomme ich schon genug.
Vielen Dank dass Du Dich noch mit meinen Problem befasst.
In sehr kleinen Schritten komme ich auch schon weiter.
beste Grüße
sonja.ausHH
eMail?
04.02.2007 03:03:58
Florian
Hallo, Sonja,
wie wäre es mit
peter punkt mueller bei t minus online punkt der ohne r
Gruß, Florian aus Berlin
Anzeige
AW: eMail?
04.02.2007 03:53:54
sonja.ausHH
Hi Florian,
danke für`s "offen". ;-)
Gruß
sonja.ausHH

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige