es folgt die Darstellung und danach meine Frage?
es folgt die Darstellung und danach meine Frage?
ja, das geht; allerdings ist das hier nur ein erster Wurf und hat noch Optimierungsbedarf (insbesondere, was die Fehlerbehandlung angeht):
Gruß
Mike
Danke für Deine schnelle Antwort!!!
Möchte Deine Code ausprobieren und habe noch Fragen:
1) NameTab = Worksheets("Tabelle1"), "Tabelle1" ersetze ich mich dem Originalnamen meines Blattes richtig!?
2) In meiner Tabelle werden exakt 100 Ma-Nr. vergeben, d.h. die Nachnamespalte "C" in meinem Beispiel geht maximal auf "C101". Ist diese Tatsache in deinem Code berücksichtigt?
3) in welche Zeile Deines Codes erkenne ich, dass das Blatt "Muster" kopiert wird?
Verzeih meine komischen Fragen, bin aber noch relativer Laie in Excel.
Gruss Bernd
1.) Ja
2.) da habe ich mich ganz exakt an dein Beispiel gehalten; hier ist also noch erheblicher Optimierungsbedarf 8das schaffe ich heute leider nicht mehr)
3.) das müsste (nach entsprechender Änderung) die gesuchte Code-Zeile(n) sein:
Sheets("Tabelle1").Select
Cells.Select
Selection.Copy Destination:=Sheets(NameTab).Cells(1, 1)
Gruß
Mike
würde mich sehr freuen, wenn Du mir bei der Lösung weiter zur Seite stehen könntest, aber lass Dir Zeit, denn mein Projekt musss nicht morgen fertig sein.
Du kannst mir auch gerne per Mail Deine Vorschläge zukommen lassen, wenn Du willst.
Danke erstmal und bis bald
Gruss Bernd
würde mich sehr freuen, wenn Du mir bei der Lösung weiter zur Seite stehen könntest, aber lass Dir Zeit, denn mein Projekt musss nicht morgen fertig sein.
Du kannst mir auch gerne per Mail Deine Vorschläge zukommen lassen, wenn Du willst.
Danke erstmal und bis bald
Gruss Bernd
habe auch noch eine Lösung für Dich.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Anzahl As Long, Bereich As Range, Blattname
Set Bereich = Range("C2:C150")
On Error GoTo Fehler
If Intersect(Target, Bereich) Is Nothing Then
Else
Anzahl = Sheets.Count
Sheets("Muster").Select
Sheets("Muster").Copy After:=Sheets(Anzahl)
Blattname = Target.Value & "_" & Right(Target.Offset(0, -2).Value, 3)
ActiveSheet.Name = Blattname
Fehler:
If Err.Number = 1004 Then
MsgBox ("Blatt mit dem Namen: " & Blattname & " existiert bereits!"), vbInformation: ActiveSheet.Delete
End If
End If
Sheets("Muster").Select
End Sub
Viel Erfolg!
danke erstmal, probiere es gleich aus und melde mich dann nochmal.
Gruss Bernd
danke erstmal, probiere es gleich aus und melde mich dann nochmal.
Gruss Bernd
heir dein etwas von mir abgeänderter Code und anschließend die Problemdarstellung:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Anzahl As Long, Bereich As Range, Blattname
Set Bereich = Range("C2:C101")
On Error GoTo Fehler
If Intersect(Target, Bereich) Is Nothing Then
Else
Anzahl = Sheets.Count
Sheets("Muster").Select
Sheets("Muster").Copy After:=Sheets(Anzahl)
Blattname = Target.Value & "_" & Right(Target.Offset(0, -2).Value, 3)
ActiveSheet.Name = Blattname
Fehler:
If Err.Number = 1004 Then
MsgBox ("Blatt mit dem Namen: " & Blattname & " existiert bereits!"), vbInformation: ActiveSheet.Delete
End If
End If
Sheets("GP_Daten").Select
End Sub
Folgendes passiert:
ich beginne mit der Eingabe in Spalte B, beim verlassen wird in Spalte A eine MA-Nr. duch "Wenn"-Abfrage generiert und es wird ein Blatt angelegt welches so aussieht "_206", das darf bei verlassen von Spalte B nach C noch nicht passieren, sondern wenn ich die Spalte C verlasse, dann wird ein korrektes Blatt mit dem Inhalt aus C und den letzten drei Zahlen der Spalte A angelegt, allerdings wird erneut versucht dasselbe Blatt anzulegen, wenn ich von Spalte D zurück auf C gehe, das darf nicht sein.
Kannst du mir bei der Lösung helfen???
Gruss Bernd
Frage: Warum hast Du das Ereignis Worksheet_SelectionChange(ByVal Target As Range) gewählt? In meinem Beispiel arbeite ich mit Worksheet_Change(ByVal Target As Range)!
Deine Vorgehensweise hat zur Folge, dass sowohl bei Eintritt in den Bereich der Spalte C als auch beim Verlassen das Makro automatisch abläuft.
Bei Worksheet_Change(ByVal Target As Range) ist eine Veränderung des Zellinhaltes nötig, um das Makro zu starten. Das wäre bei Dir von Vorteil.
kannst du mir noch mal verzeihen, habe deinen Code ab 2. Zeile kopiert und in "Worksheet" eingepflanzt, was verkehrt war.
Es läuft nach Korrektur perfekt.
Eine kurze Frage noch:
Falls ich aus Versehen die Spalte wechsele, gibt es eine Möglichkeit, dass vorher eine Abfrage an den User stattfindet, ob das besagte Blatt "wirklich angelegt werden soll, oder nicht, und falls nicht, ich wieder in die Zelle der Eingabe zurückgeführt werde.
Gruss Bernd
das sieht dann so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Anzahl As Long, Bereich As Range, Blattname, Abfrage As String
Set Bereich = Range("C1:C101")
On Error GoTo Fehler
If Intersect(Target, Bereich) Is Nothing Then
Else
Anzahl = Sheets.Count
Sheets("Muster").Select
Blattname = Target.Value & "_" & Right(Target.Offset(0, -2).Value, 3)
Abfrage = MsgBox("Soll das Blatt" & Chr(10) & Blattname & " angelegt werden?", vbYesNo)
If Abfrage = vbNo Then
Target.Select
Exit Sub
Else
Sheets("Muster").Copy After:=Sheets(Anzahl)
ActiveSheet.Name = Blattname
Fehler:
If Err.Number = 1004 Then
MsgBox ("Blatt mit dem Namen: " & Blattname & " existiert bereits!"), vbInformation: ActiveSheet.Delete
End If
End If
End If
Sheets("GP_Daten").Select
End Sub
wie sagen wir Bremer:"einfach spitzenmäßig"
Vielen Dank nochmal und ich wünsche Dir noch ein sehr langes Leben (nicht ganz uneigennützig).
Gruss Bernd
Lösung ist da!!!
Danke nochmal sehr für Deine Hilfe
Gruss Bernd