Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: mexico67 am März 26, 2012, 09:27:34 Vormittag

Titel: Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: mexico67 am März 26, 2012, 09:27:34 Vormittag
Hallo
ich bitte um Eure geschätzte Hilfe bei meinem Problem.

Bestand: Tabelle mit mehreren Spalten und Zeilen
z.B. Spalte A=Vorname;B=Nachname;c=Datum;D=Uhrzeit
in Spalte " Datum " sind mehrerre Datum gelistet
wenn nun das aktuelle Datum kommt soll ein neues Tabellenblatt z.B. " Aktuell "in der Tabelle angelegt werden. In diesem neuen Tabellenblatt sollen nur die Spalten und Zeilen gelistet werden in welcher sich das aktuelle Datum befindet.

Selber kreiert habe ich schon die Abfrage allerdings in einem manuell erstellten neuen Tabellenblatt =wenn(c2=heute();a2;0)=wenn(c2=heute();b2;0)=wenn(c2=heute();d2;0)
Ich habe zwar von Ihrem Makro/Funktion-Code gelesen, kann Ihn aber nicht umsetzten, da ich von VBA keine Ahnung ( Vorgang) habe
Ich würde mich freuen, wenn Sie mir helfen könnten.
Besten Dank im Vorraus
Viele Grüße
Mexico67
Titel: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: mexico67 am März 30, 2012, 17:58:17 Nachmittag
Kann mir denn da niemand helfen ????

Gruß Mexico67
Titel: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: Beverly am April 01, 2012, 09:17:51 Vormittag
Hi,

kopiere folgenden Code ins Codemodul "DieseArbeitsmappe":

Private Sub Workbook_Open()
   Dim wksTab As Worksheet
   Dim blnVorhanden As Boolean
   Dim lngZeile As Long
   Dim lngErste As Long
   lngZeile = 2
   ' prüfen ob Tabellenblatt aktuelles Datum schon vorhanden
   For Each wksTab In Worksheets
      If wksTab.Name = Date Then
         blnVorhanden = True
         Exit For
      End If
   Next wksTab
   ' Tabellenblatt aktuelles Datum noch nicht vorhanden
   If blnVorhanden = False Then
      ' neues Tabellenblatt erstellen
      With Worksheets.Add
         ' Name aktuelles Datum
         .Name = Date
         ' ans Ende stellen
         .Move after:=Worksheets(Worksheets.Count)
         ' Überschrift der Spalten A:D kopieren
         Worksheets("Tabelle1").Range("A1:D1").Copy .Range("A1")
         ' Schleife über alle Zeilen des Ausgangstabellenblattes
         Do
            ' in Spalte C steht das aktuelle Datum
            If Worksheets("Tabelle1").Cells(lngZeile, 3) = Date Then
               ' erste freie Zeile im Tabellenblatt des aktuellen Datums ermitteln
               lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
               ' Bereich A:D der laufenden Zeile ins Tabellenblatt aktuelles Datum kopieren
               Worksheets("Tabelle1").Range("A" & lngZeile & ":D" & lngZeile).Copy .Cells(lngErste, 1)
            End If
            lngZeile = lngZeile + 1
         Loop While Worksheets("Tabelle1").Cells(lngZeile, 1) <> ""
      End With
   End If
End Sub

Beim Öffnen der Arbeitsmappe wird geprüft, ob es ein Tabellenblatt gibt, welches den Namen des aktuellen Datums hat. Wenn nicht, wird ein neues Tabellenblatt mit dem entsprechenden Namen angelegt und alle Daten der Spalten A:D aus dem Tabellenblatt "Tabelle1" in dieses neue Tabellenblatt kopiert, wenn in Spalte D das aktuelle Datum vorkommt.

Bis später,
Karin
Titel: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: mexico67 am April 02, 2012, 16:33:53 Nachmittag
Hallo Karin,
vielen Dank daß Sie sich meinem Problem annehmen. Aber bitte entschuldigen Sie, ich habe bis jetzt noch nie was mit VBA gemacht, deswegen weiß ich nicht wo ich, wie ich ein Code-Modul erstellen/anlegen kann und wie es danach weiter geht.
Ist schon ein Code-Modul bei meiner Tabelle/Arbeitsblatt schon kreiert??
Muß ich das Code-Modul, wenn ich Ihren Code hineinkopiert habe abspeichern ??
Vielen Dak für Ihre Bemühungen
Viele Grüße aus dem Schwarzwald
Mexico67
Titel: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: Officer am April 04, 2012, 07:11:29 Vormittag
Hallo mexico67,

öffne mit der Tastenkombinatino [Alt] + [F11] den VBA-Editor. Dort findest Du im VBA-Explorer das Code-Modul "DieseArbeitsmappe". Dort fügst Du den von Beverly geposteten VBA-Code ein. Der Code wird beim Starten der Arbeitsmappe ausgeführt.

Gruß

Officer

Titel: Office 2003: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: mexico67 am April 04, 2012, 10:13:15 Vormittag
Hallo Beverly & Officer

vielen , vielen Dank für Eure Hilfe. Habe alles kopiert und es funktioniert auch.
Wenn das aktuelle Datum kommt, wird ein neues Tabellenblatt mit dem Blattnamen z.B. " 4.4.2012" angelegt, und die Überschrift der Zeile 1 vom vorhandenen Tabellenblatt (A1=Nr;B1=Vorname;C1=Name;D1=Datum) in das neue Tabellenblatt kopiert.
Leider werden die Werte in den anderen Zeilen ( A2 bis z.B A50 ; B2:B50 usw. nicht kopiert, wenn in "D2:D50" irgend wo noch das aktuelle Datum steht.
Deswegen bitte ich nochmal um Eure geschätzte Hilfe
Vielen Dank
Mexico 67
Titel: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: mexico67 am April 04, 2012, 20:48:29 Nachmittag
Hallo Beverly
Komando zurück, habe mir den Code näher angeschaut und kleine Änderungen vorgenommen, da die Beschreibung des Codes super ist. Habe " Tabelle1" in den entsprechenden Tabellennamen geändert. Jetzt funktioniert alles.

Trotzdem tauchen noch neue Fragen auf:
Was muß ich im Code ändern, daß im neuen Tabellenblatt zwei oder drei Überschriften stehen, also z.B. von A1:D1; und von A2:D2;und von A3:D3 ????
Das muß was mit "Worksheets("Tabelle1").Range("A1:D1").Copy .Range("A1") zu tun haben, da ich mal A1:D1  in A2:D2  ausgetauscht habe, dann wurden die Werte von A2:D2 eingetragen.

Wie muß der Code verändert werden, daß das Format des Tabellenblattes in das neue Tabellenblatt übernommen ( kopiert) wird ????

Noch eine andere Frage:
Wie wird eine Zahl einer Zeile fest zugeordnet ????
z.B. die Zahl 10 in A10 der Zeile 10;  oder die Zahl 60 in A15 für die Zeile 15


Darf ich nochmals um Deine oder Eure geschätzte Hilfe bitten

Viele Grüße
mexico 67
Titel: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: mexico67 am April 05, 2012, 17:32:51 Nachmittag
Hallo Beverly,
Zitat
Was muß ich im Code ändern, daß im neuen Tabellenblatt zwei oder drei Überschriften stehen, also z.B. von A1:D1; und von A2:D2;und von A3:D3 ?
nach logischem Überlegen, habe ich es geschafft die Überschrift von zwei Zeilen zu kopieren. Im Code habe ich nochmal Ihre Zeile mit den entsprechenden Feldern eingefügt.
' Überschrift der Spalten A:L kopieren
         Worksheets("Patienten").Range("A1:L1").Copy .Range("A1")
         Worksheets("Patienten").Range("A2:L2").Copy .Range("A2")

Bleibt zur Zeit nur noch die Frage mit der Formatierung (gleiche Spalten und Zeilenbreite) kopieren ins neue Tabellenblatt und
die feste Zuweisung einer Nummer für eine Zeile übrig.
Ich möchte gern eine neue fortlaufende Zeilennummer über einen Butten kreieren.
Wie muß dann das Makro aussehen ??? Wie ich den Butten mit dem Makro verknüpfe, weiß ich, oder ist es möglich, sobald der Kursor in Feld z.B. "A15" ist und dort klickt, die neue fortlaufende Zeilennummer angelegt wird ????
Viele Grüße und frohe Ostern
Mexico67



Titel: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: mexico67 am April 09, 2012, 10:37:52 Vormittag
Hallo Beverly,
vielen Dank nochmal für Deine Hilfe bei meinem Problem " Mit Wenn-Abfrage Makro starten" funktioniert nach Anpassung (mehrere Spalten und Zeilen) auf meine Belange hervorragend.
Um das Ergebnis zu vervollständigen, fehlt noch, daß das Format der Tabelle mit in das neue Tabellenblatt kopiert wird.
Wie muß das Makro ergänzt werden ????
Viele Grüße
Mexico67
Titel: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: mexico67 am April 14, 2012, 22:02:44 Nachmittag
Hallo Officer & Ricco
Zitat
Hallo mexico67,

öffne mit der Tastenkombinatino [Alt] + [F11] den VBA-Editor. Dort findest Du im VBA-Explorer das Code-Modul "DieseArbeitsmappe". Dort fügst Du den von Beverly geposteten VBA-Code ein. Der Code wird beim Starten der Arbeitsmappe ausgeführt.

Gruß

Officer

ich brauche nochmal Eure geschätzte Hilfe.
Der Code von " Beverly " funktioniert einwandfrei, aber leider wird das Format der vorhandenen Tabelle nicht mit kopiert. Welche Ergänzung fehlt inn dem Code ??
Zitat
Private Sub Workbook_Open()
   Dim wksTab As Worksheet
   Dim blnVorhanden As Boolean
   Dim lngZeile As Long
   Dim lngErste As Long
   lngZeile = 2
   ' prüfen ob Tabellenblatt aktuelles Datum schon vorhanden
   For Each wksTab In Worksheets
      If wksTab.Name = Date Then
         blnVorhanden = True
         Exit For
      End If
   Next wksTab
   ' Tabellenblatt aktuelles Datum noch nicht vorhanden
   If blnVorhanden = False Then
      ' neues Tabellenblatt erstellen
      With Worksheets.Add
         ' Name aktuelles Datum
         .Name = Date
         ' ans Ende stellen
         .Move after:=Worksheets(Worksheets.Count)
         ' Überschrift der Spalten A:D kopieren
         Worksheets("Tabelle1").Range("A1:D1").Copy .Range("A1")
         ' Schleife über alle Zeilen des Ausgangstabellenblattes
         Do
            ' in Spalte C steht das aktuelle Datum
            If Worksheets("Tabelle1").Cells(lngZeile, 3) = Date Then
               ' erste freie Zeile im Tabellenblatt des aktuellen Datums ermitteln
               lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
               ' Bereich A:D der laufenden Zeile ins Tabellenblatt aktuelles Datum kopieren
               Worksheets("Tabelle1").Range("A" & lngZeile & ":D" & lngZeile).Copy .Cells(lngErste, 1)
            End If
            lngZeile = lngZeile + 1
         Loop While Worksheets("Tabelle1").Cells(lngZeile, 1) <> ""
      End With
   End If
End Sub
Vielen Dank für eure Hilfe

VG Mexico67
Titel: Antw:Office 2003: Mit Wenn-Abfrage makro starten
Beitrag von: mexico67 am April 21, 2012, 13:50:54 Nachmittag
Hallo Officer & Ricco,
leider komme ich da nicht weiter
ich brauche nochmal Eure geschätzte Hilfe.
Der Code von " Beverly " funktioniert einwandfrei, aber leider wird das Format der vorhandenen Tabelle nicht mit kopiert. Welche Ergänzung fehlt in dem Code ??

Zitat
Private Sub Workbook_Open()
   Dim wksTab As Worksheet
   Dim blnVorhanden As Boolean
   Dim lngZeile As Long
   Dim lngErste As Long
   lngZeile = 2
   ' prüfen ob Tabellenblatt aktuelles Datum schon vorhanden
   For Each wksTab In Worksheets
      If wksTab.Name = Date Then
         blnVorhanden = True
         Exit For
      End If
   Next wksTab
   ' Tabellenblatt aktuelles Datum noch nicht vorhanden
   If blnVorhanden = False Then
      ' neues Tabellenblatt erstellen
      With Worksheets.Add
         ' Name aktuelles Datum
         .Name = Date
         ' ans Ende stellen
         .Move after:=Worksheets(Worksheets.Count)
         ' Überschrift der Spalten A:D kopieren
         Worksheets("Tabelle1").Range("A1:D1").Copy .Range("A1")
         ' Schleife über alle Zeilen des Ausgangstabellenblattes
         Do
            ' in Spalte C steht das aktuelle Datum
            If Worksheets("Tabelle1").Cells(lngZeile, 3) = Date Then
               ' erste freie Zeile im Tabellenblatt des aktuellen Datums ermitteln
               lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
               ' Bereich A:D der laufenden Zeile ins Tabellenblatt aktuelles Datum kopieren
               Worksheets("Tabelle1").Range("A" & lngZeile & "" & lngZeile).Copy .Cells(lngErste, 1)
            End If
            lngZeile = lngZeile + 1
         Loop While Worksheets("Tabelle1").Cells(lngZeile, 1) <> ""
      End With
   End If
End Sub
Vielen Dank für eure Hilfe

Vielen Dank für Eure Hilfe
Viele Grüße
Mexico67