Microsoft Excel

Herbers Excel/VBA-Archiv

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

per Makro Zellen kopieren

Betrifft: per Makro Zellen kopieren von: Roger
Geschrieben am: 07.10.2020 22:34:37

Guten Abend, gerne möchte ich jeweils aus der gleichen Mappe in der es Zwei Blätter hat gewisse Zellen in das andere Blatt kopieren dies mit VBA. Das Problem ist das die Mappen immer andere Namen haben. Gibt es eine Möglichkeit einen VBA zu erstellen in dem immer die gleichen Zellen von dem ersten Blatt in immer die gleiche Zelle vom 2 Blatt kopiert. Die Blätternamen ändern sich aber immer. Im Grunde sind es 3 Blätter in der Mappe die erste wird nicht gebraucht. Somit wird die Daten von dem 2 Blatt in das 3 Blatt kopiert. Würde mich um Eure Hilfe freuen. Freundliche Grüsse Roger

Betrifft: Antwort: Ja
von: Werner
Geschrieben am: 07.10.2020 22:59:16



Betrifft: AW: per Makro Zellen kopieren
von: Niclaus Wurthberg
Geschrieben am: 07.10.2020 23:07:54

Hallo Roger

Mit dem folgenden Makro wird von der zweiten Tabelle der Bereich A1:D4 in die dritte Tabelle kopiert. Die Namen der Tabellen spielen dabei keine Rolle.
Worksheets(2).Range("A1:D4").Copy Destination:=Worksheets(3).Range("A1")
Ist es das, was Du suchst? Grüsse Niclaus

Betrifft: AW: per Makro Zellen kopieren
von: Roger
Geschrieben am: 08.10.2020 22:26:33

Vielen Dank! Genau dies suchte ich! Eine weitere Frage kann ich das Blatt (Nr.2) per VBA bzw. der Blattname vom Blatt Nr.3 auf Blattnummer 2 kopieren und dies mit einer folge Nr.+1 bennenen? Bsp Original (1) auf Original (2)

Betrifft: AW: per Makro Zellen kopieren
von: Niclaus Wurthberg
Geschrieben am: 09.10.2020 12:04:34

Der Name der dritten Tabelle in einer Datei heisst "Original(1)". Nun soll die zweite Tabelle umbenannt werden zu "Original(2)".
Oder: Die dritte Tabelle heisst "Zuerich(12)". Die zweite Tabelle soll umbenannt werden zu "Zuerich(13)" usw.

Ist es das was Du willst? – Wenn ja, dann macht das das folgende Makro. Aber nur dann, wenn die Zahl in Klammern (nn) gesetzt ist!
Sub Tab2Umbenennen()
name3 = Worksheets(3).Name
nn = Right(name3, Len(name3) - InStr(name3, "("))
nn1 = Val(nn)
nn2 = nn1 + 1
name3new = Replace(name3, nn1, nn2)
Worksheets(2).Name = name3new
End Sub
Grüsse Niclaus

Betrifft: AW: per Makro Zellen kopieren
von: Niclaus Wurthberg
Geschrieben am: 09.10.2020 14:09:10

Noch eine Variante: Die Zahl im Namen der dritten Tabelle muss nicht (kann aber) in Klammern stehen.
Dritte Tabelle = "Zuerich015" - die zweite Tabelle wird dann umbenannt zu "Zuerich016"
Oder 3. Tabelle = "Original(1)" - 2. Tabelle wird dann zu "Original(2)".
Wenn der Name der 3. Tabelle keine Zahl enthält ("Original"), dann wird die 2. Tabelle umbenannt zu "Original(1)".
Sub Tab2UmbenennenVersion2()
tabname3 = Worksheets(3).Name
For nn = 1 To Len(tabname3)
    xx = Mid(tabname3, nn, 1)
    If IsNumeric(xx) Then Exit For
Next nn
If Not IsNumeric(xx) Then
    Worksheets(2).Name = tabname3 & "(1)"
    Exit Sub
End If
mm1 = Val(Mid(tabname3, nn, 999))
mm2 = mm1 + 1
name3new = Replace(tabname3, mm1, mm2)
Worksheets(2).Name = name3new
End Sub
Zu Fehlermeldung kommt es (in beiden Versionen), wenn irgendeine andere Tabelle bereits den neuen Namen trägt!

Betrifft: AW: per Makro Zellen kopieren
von: Roger
Geschrieben am: 10.10.2020 20:06:48

Guten Abend, der Code funktioniert mit den Klammern PERFEKT!
Was mir jedoch aufgefallen ist das, wenn mein "Name" beim Blatt 5305.1.1 (1) und danach den Code verwende verändert es mir auch die Kundennummer von 5305 auf 5405 sprich die dritte Zahl wird verändert, was es nicht sollte "nur" die Zahl in der Klammer sollte +1 angepasst werden. Hast Du mir einen Tipp wie ich den Code anpassen könnte? Freundliche Grüsse
Sub Tab2Umbenennen()
 name3 = Worksheets(3).Name
 nn = Right(name3, Len(name3) - InStr(name3, "("))
 nn1 = Val(nn)
 nn2 = nn1 + 1
 name3new = Replace(name3, nn1, nn2)
 Worksheets(2).Name = name3new
 End Sub


Betrifft: AW: per Makro Zellen kopieren
von: Niclaus Wurthberg
Geschrieben am: 11.10.2020 12:49:51

Das habe ich nicht überlegt: Dass der Name der dritten Tabelle auch Zahlen enthalten kann.
Hier eine Version 4. Bedingung dabei: Der Name der dritten Tabelle muss ein (und darf nur ein) Klammerpaar mit einer Zahl enthalten! Dieses Klammerpaar muss am Ende des Namens stehen. Also z. B. "5305.1.1 (1)"
Sub Tab2NewNameVers4()
On Error GoTo fehler1
name3 = Worksheets(3).Name
name2 = Left(name3, InStr(name3, "("))
nn2 = Val(Right(name3, Len(name3) - InStr(name3, "("))) + 1
name2 = name2 & nn2 & ")"
Worksheets(2).Name = name2
Exit Sub
fehler1:
If Err.Number = 1004 Then
    MsgBox "Es gibt bereits eine Tabelle " & name2 & "!"
End If
End Sub