Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zeilen kopieren | Herbers Excel-Forum


Betrifft: Zeilen kopieren von: Jochen
Geschrieben am: 24.10.2008 20:05:14

Hallo habe eine Frage ob das was ich machen will überhaupt geht?

Ich habe ein Tabellenblatt in dem es 5 Bezeichnungen gibt: ZU, AB, FO, AU, UM.
Jede dieser Bezeichnung hat aber noch einen Anhang, dieser Anhang sieht
verschieden aus.
Beispiel: AU/01
AU-05
FO/12
FO-13
AB-02
AB/14
ZU-25
ZU/24
UM-01
UM/08

Möchte jetzt ein Makro schreiben in dem bei Eingabe der ersten zwei Buchstaben diese Zeile
auf ein ander Tabellblatt kopiert wird.
Wenn ich eingebe FO/12 eingebe dann soll die Zeile in das Tabellenblatt FO kopiert werden.
Bei Eingabe FO-04 soll diese Zeile auch auf das Tabellenblatt FO kopiert werden.
Das selbe soll mit den anderen geschehen.
AU auf das Tabellenblatt AU
ZU auf das Tabellenblatt ZU
UM auf das Tabellenblatt UM und
AB auf das Tabellenblatt AB.
Geht das überhaupt wenn man den Anhang unterschiedlich schreiben kann.
Es gibt leider keine Bezeichnung ohne Anhang.

Gruß Jochen

  

Betrifft: AW: Zeilen kopieren von: stormy_weathers
Geschrieben am: 24.10.2008 20:09:22

Hallo Jochen,

wenn du das ding nicht öfters brauchst, würde ich die original-tabelle mit filter belegen und die datensätze in die entsprechenden tabellen kopieren.
ansonsten musst du deine eingabe "zerlegen" (also aus UM/08 die ersten beiden zeichen auslesen). dann weißt du, wo du hinkopiern musst.

gruß
stormy


  

Betrifft: AW: Zeilen kopieren von: Erich G.
Geschrieben am: 24.10.2008 20:22:52

Hallo Jochen,
in welchen Bereich (z. B. in welche Spalte) werden diese 5 Bezeichnungen geschrieben?
(Dieser Bereich wäre dann zu überwachen.)

Was soll geschehen, wenn die ersten beiden Zeichen nicht in der Liste der 5 Bezeichnungen stehen?
(z. B. wegen eines Tippfehlers...)

Du schreibst, dass bei Eingabe der ersten zwei Buchstaben (z.B. AU) die ganze Zeile kopiert werden soll.
Soll nicht erst abgewartet werden, bis die Eingabe komplett erfolgt ist (z. B. AU/01)?

Stehen in dem Moment schon weitere Daten in der Zeile, die mitkopiert werden, ist die Zeile also dann "fertig"?

Wenn in einer Zeile, die bereits einmal kopiert wurde, die Zelle mit "AU/02" überschrieben wird mit z. B. AU/11,
dann wird diese Zeile ein zweites Mal in Blatt AU kopiert. Soll das so sein?

Sollen die Kopien in den Blättern jeweils unter die letzte beschriebene Zeile kopiert werden?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Zeilen kopieren von: Jochen
Geschrieben am: 24.10.2008 20:51:56

Hallo beantworte die Fragen der Reihe nach.

Die Bezeichnung seht immer in der der Zelle A9.

Bei der Eingabe der ersten beiden Zeichen sollten keine Tipfehler geschehen.
Muss aber sagen das ich daran nicht gedacht habe.

Das ist richtig den in Reihe 9 erfolgen noch mehr Eingaben und die
gesamte Reihe 9 soll kopiert werden, nach der lezten Eingabe.

Bei der nächsten Eingabe wird in Reihe 9 eine neue Reihe eingefügt so das diese leer ist und die letzte Eingabe geht eine Zeile tiefer.

Die Kopien sollen auf den Blättern auch in der Reihe 9 erscheinen und der letzte Datensatz eine
Zeile tiefer gesetzt werden.

Hoffe die Fragen ausreichend beantworte zuhaben.
Gruß Jochen


  

Betrifft: AW: Zeilen kopieren von: Erich G.
Geschrieben am: 24.10.2008 21:05:00

Hallo Jochen,
erst mal weitere Fragen:

1.
Was soll passieren, wenn in A9 die beiden ersten Zeichen nicht bei den 5 vorkommen?

2.
"nach der letzten Eingabe soll kopiert werden":
Woran soll VBA erkennen, dass eine Zeile fertig ist, also die letzte Eingabe erfolgt ist?
(Eine Möglichkeit wäre, dass der Benutzer dann auf einen Button klickt.)

3.
"Bei der nächsten Eingabe wird in Reihe 9 eine neue Reihe eingefügt"
Wird das jetzt manuell erledigt? (könnte künftig im Makro erfolgen)

4. (nochmal)
Wenn in einer Zeile, die bereits einmal kopiert wurde, die Zelle mit "AU/02" überschrieben wird mit z. B. AU/11,
dann wird diese Zeile ein zweites Mal in Blatt AU kopiert. Soll das so sein?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Zeilen kopieren von: Jochen
Geschrieben am: 24.10.2008 21:25:02

Hallo Erich
In Zeile A9 muß einer dieser Bezeichnungen sehen.

VBA erkennt das Ende der Eingabe in Zeile 9 durch das Ende des Makros mit dem die Eingabe
erfolgt.

Die neue Reihe 9 wird jedesmal beim Aufrufen des Eingabemakros neu eingefügt, durch das
Eingabemakro.

Es werden keine Zellen überschrieben.
Bei jeder neuen Eingabe ( Start des Eingabemakros) wird eine neue Reihe eingefügt.
Die Eingabedaten der letzten Reihe gehen nach unten auf Reihe 10, bei der nächten Eingabe
dann auf Reihe 11. Die Daten in Reihe 9 dann in Reihe 10.
Alle Eingabedaten rutschen nach unten.

Gruß Jochen



  

Betrifft: AW: Zeilen kopieren von: Erich G.
Geschrieben am: 25.10.2008 00:02:08

Hi Jochen,
sorry, meine 4. Frage war Unfug - Zeile 9 ist ja nach dem Verschieben immer leer, da hast du natürlich recht.

Deine Antwort auf Frage 2 verstehe ich nicht.
"Woran soll VBA erkennen, dass eine Zeile fertig ist, also die letzte Eingabe erfolgt ist?"
"VBA erkennt das Ende der Eingabe in Zeile 9 durch das Ende des Makros mit dem die Eingabe erfolgt."

So wie ich das sehe, läuft während der Benutzereingaben in Zeile 9 KEIN Makro.
Der Benutzer gibt mittels Tastatur oder Maus einen Wert in A9 und weitere Zellen in Zeile 9 ein.
In welcher Reihenfolge er das tut, ist gleichgültig.

Nehmen wir an, A9, B9 und C9 wurden gefüllt. Kein Programm oder Makro kann wissen,
ob der Benutzer noch etwas in D9 eingeben oder vielleicht auch seine Eingabe in B9 korrigieren will.

Wenn der Benutzer meint, fertig zu sein, muss er das VBA irgendwie mitteilen,
das Makro zum Kopieren und Verschieben starten - etwa per Button.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Zeilen kopieren von: Erich G.
Geschrieben am: 25.10.2008 12:04:16

Hallo Jochen,
das habe ich jetzt mal für dich gebastelt: https://www.herber.de/bbs/user/56259.xls

Viel Spaß beim Testen und schönes Wochenende!

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Zeilen kopieren von: Jochen
Geschrieben am: 25.10.2008 14:20:15

Hallo Erich
Habe gerade erst meinen Rechner angeschaltet.
Die Familie geht vor.
Antwort auf deine Frage von heute um 2 Uhr:
Die Eingaben können nur gemacht werden wenn der Benutzer ein Makro startet.
Am Ende des Makros wird gefragt ob diese Eingaben richtig sind.
Wird die Frage mit nein beantwortet startet das Makro von vorn.
Ist die Antwort Ja dann ist die Eingabe beendet, das Makro auch.
Werde jetzt dein Makro von heute kopieren.
Habe mein Internet und mein Excel auf zwei Festplatten mit zwei verschiedenen Windowsversionen.
Danke erstmal
Gruß Jochen


  

Betrifft: AW: Zeilen kopieren - kommentiert von: Erich G.
Geschrieben am: 26.10.2008 20:09:14

Hallo Jochen,
du hättest ruhig in diesem Thread bleiben können...

Ich habe dir hier einige Kommentare eingebaut:

Option Explicit

Sub cbStart()
   Dim strB As String

   If Len(Cells(9, 1)) > 1 Then       ' in A9 muss mehr als 1 Zeichen stehen
      strB = Left(Cells(9, 1), 2)     ' merke die beiden ersten Zeichen von A9
      If worksheetEx(strB) Then       ' wenn ein Blatt mit dem Namen existiert
         With Worksheets(strB)        '   arbeite in Blatt strB
            .Rows(9).Insert           '   füge neue leere Zeile 9 in Blatt strB ein
            Rows(9).Copy .Cells(9, 1) '   kopiere Zeile 9 aus Tab1 in Blatt strB
         End With
         Rows(9).Insert               '   füge neue leere Zeile 9 in Tab1 ein
      Else                            ' sonst melde einen Fehler
         MsgBox "Es gibt kein Blatt '" & strB & "'!", vbCritical, "Abbruch"
      End If
   Else
      MsgBox "In A9 müssen mindestens zwei Zeichen stehen.", vbCritical, "Abbruch"
   End If
End Sub

Function worksheetEx(strNam As String) As Boolean
   ' Wenn das Blatt nicht existiert, gibt es einen Fehler, der aber mit
   '   "On Error Resume Next" übergangen wird.
   '   worksheetEx wird nicht belegt und hat/behält den Defaultwert Falsch
   '
   ' Wenn das Blatt existiert, ist der Index des Blattes > 0, worksheetEx ist Wahr
   On Error Resume Next
   worksheetEx = Worksheets(strNam).Index > 0
End Function

Alles klar?

(Vielleicht könntest du dir in der VBA-Hilfe mal With ... End With ansehen. Das ist oft sehr nützlich.)

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Zeilen kopieren - kommentiert von: Jochen
Geschrieben am: 26.10.2008 20:26:13

Hallo
Danke für die Kommentare
Werde mir die With Anweisung ansehen.
Gruß Jochen


  

Betrifft: AW: Zeilen kopieren von: Jochen
Geschrieben am: 28.10.2008 22:29:18

Hallo Erich
Danke für die Kommentare hinter den Zeilen.
So kann ich den Ablauf schritt für schritt verfolgen ohne das ich erst raten muß.
Habe jetzt noch eine Frage.
Kann man in das Makro auch noch eine Zeile einfügen so das auf dem
angesprochen Blatt noch eine Aktion durchgeführt wird.
ZB. Wenn aus meiner Eingabetabelle die Reihe 9 auf das Blatt "Zu" kopiert wir, kann man dann im Blatt ZU die Zelle A8 in die Zelle A12 kopiert und dann mit der Zelle A16 malnehmen.
Geht das.
Gruß Jochen


  

Betrifft: AW: weitere Berechnungen von: Erich G.
Geschrieben am: 29.10.2008 08:04:25

Hi Jochen,
ist das jetzt ein willkürlich gewähltes Beispiel für eine Erweiterung des Makros oder hat das Ganze einen Sinn?

Im Blatt ZU stehen ab A9 abwärts Texte die so: "ZU/..." oder ähnlich aussehen.
Nun willst du A12 durch den Wert von A8 überschreiben, der "ZU/..."-Eintrag in A12 ist damit weg.

Das soll dann noch mit A16 multipliziert werden. In A16 steht aber auch erst mal ein Text wie "ZU/...",
damit kann man nicht multiplizieren.

Was du nicht geschrieben hast:
Wo sollte das Ergebnis der Multiplikation denn hingeschrieben wqerden?
Und soll das Ganze nur im Blatt ZU, also nicht in den anderen Blättern, passieren?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: weitere Berechnungen von: Jochen
Geschrieben am: 29.10.2008 21:45:13

Hallo Erich
Das Beispiel war blöde gewählt.
Welche Möglichkeit habe ich, dir einmal das zuzeigen was bisher bei meinem Programm
entstanden ist. Kann ich dir das Programm zusenden?
Dann könnte ich dir vielleicht besser erklären was ich bis jetzt gemacht habe und was ich
nun damit machen möchte.
Denke mir das meine Makros bei dir anders Aussehen würden.
Bei läuft das Grundprogamm mit den Mitteln die ich anwenden konnte, würde bestimmt
einfacher gehen.
Würde ungern alle Blätter mit den Makros in Forum stellen.
Gruß Jochen


Beiträge aus den Excel-Beispielen zum Thema "Zeilen kopieren"