Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
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
Inhaltsverzeichnis

Makro verfeinern mit MSG Boxen

Makro verfeinern mit MSG Boxen
19.01.2020 20:44:40
Andreas

Guten Abend,
habe mit dem Macro Recorder mein Makro aufgezeichnet. Es funktioniert - was den Ablauf des Kopierens und Umbennen der "Bestandsdatei" und die anschließende Anordnung der Fenster betrifft.
Nun soll es verfeinert- und noch etwas Sicherheit bekommen.
## 1. Makro darf nur ausgeführt wenn "Bestand" existiert - diese Tabelle wird vorher erstellt.
vieleicht MSG Box Hinweis - "Bestand exitiert noch nicht" ---- Abbruch ... oder so ähnlich
## 2. wenn die "Tabelle1" - die erstellt werden soll- Bereits existiert, dann soll diese in einem weiteren Tabellenblatt Kopiert und Umbenannt werden "Kopie' mit aktuellem "Datum von Heute". wenn möglich? -- und Makro ausführen
## 3. wenn die "Tabelle1" - die erstellt werden soll- noch nicht existiert, dann MSG Box mit Hinweis ""Tabelle1 existiert noch nicht, soll sie Erstellt werden? "" "Ja "dann ausführen Makro "Nein" dann Abbruch
Das wird mir jetzt zu kompliziert. Kann mir wer helfen?
MfG Andreas
  • ub Copy_Umbennen()
    '#### Schritt1
    ' Bestand in Tabelle1 Copy und Umbennen
    ' und Anordnung der Fenster
    ActiveWindow.Zoom = 50
    Sheets("Bestand").Select
    Sheets("Bestand").Copy Before:=Sheets(2)
    Sheets("Bestand (2)").Select
    Sheets("Bestand (2)").Name = "Tabelle1"
    Range("U32").Select
    Sheets("Bestand").Select
    ActiveWindow.NewWindow
    ActiveWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
    Sheets("Bestand").Select
    ActiveWindow.Zoom = 50
    Application.Left = 463
    Application.Top = 1
    Application.Width = 978.75
    Application.Height = 781.5
    Windows("Vorlage Normal-Bearbeitung.xlsm:1").Activate
    Sheets("Tabelle1").Select
    Application.Left = 739.75
    Application.Top = 1
    Application.Width = 702
    Application.Height = 781.5
    Application.Left = 0.25
    Application.Top = 1
    Application.Width = 484.5
    Application.Height = 781.5
    Windows("Vorlage Normal-Bearbeitung.xlsm:2").Activate
    Application.Left = 484
    Application.Top = 1
    Application.Width = 957.75
    Application.Height = 781.5
    Windows("Vorlage Normal-Bearbeitung.xlsm:1").Activate
    ActiveWindow.Zoom = 90
    ActiveWindow.ScrollColumn = 1
    ActiveWindow.SmallScroll Down:=-3
    Range("B10").Select
    Windows("Vorlage Normal-Bearbeitung.xlsm:1").Activate
    ActiveWindow.Zoom = 50
    Windows("Vorlage Normal-Bearbeitung.xlsm:2").Activate
    Sheets("Tabelle1").Select
    Application.Left = 499.75
    Application.Top = 1
    Application.Width = 498
    Application.Height = 781.5
    Windows("Vorlage Normal-Bearbeitung.xlsm:1").Activate
    Sheets("Bestand").Select
    Windows("Vorlage Normal-Bearbeitung.xlsm:2").Activate
    ActiveWindow.SmallScroll Down:=12
    Application.Left = 486.25
    Application.Top = 1
    Application.Width = 955.5
    Application.Height = 781.5
    End Sub

  • 2
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Makro verfeinern mit MSG Boxen
    20.01.2020 10:11:44
    Daniel
    HI
    um zu prüfen, ob ein Tabellenblatt vorhanden ist, kannst du so vorgehen:
    dim wsh as Worksheet
    for each wsh in ActiveWorkbook.Worksheets
    if wsh.Name = "Bestand" then Exit for
    Next
    if wsh is Nothing then
    hier der Code, wenn das gesuchte Blatt nicht vorhanden ist
    Else
    hier der Code wenn das Blatt vorhanden ist. Du kannst
    jetzt die Variable wsh verwenden, um dieses Blatt anzusprechen.
    End If
    

    Gruß Daniel
    AW: Makro verfeinern mit MSG Boxen
    21.01.2020 06:17:54
    Andreas
    Hallo Daniel,
    Danke für die Hilfe. Super erklärt.
    Angenommen ich möchte weitere Abfragen für ein zweites und drittes Blatt vornehmen, wie könnte ich dort vorgehen?
    Einfach dein Abrage IF nacheinander einzeln aufbauen, und dort "Blatt2" und "Blatt3" aber mit anderen Variablen einsetzen?
    Auf alle Fälle funktioniert es schon mal.
    Sub Kopie()
    Dim wsh As Worksheet
    For Each wsh In ActiveWorkbook.Worksheets
    If wsh.Name = "Tabelle1" Then Exit For
    Next
    If wsh Is Nothing Then
    ''hier der Code, wenn das gesuchte Blatt nicht vorhanden ist
    ' Löschen "Tabelle1"
    Call Copy_Umbennen
    Else
    ''hier der Code wenn das Blatt vorhanden ist. Du kannst
    ''jetzt die Variable wsh verwenden, um dieses Blatt anzusprechen.
    ' Löschen "Tabelle1"
    Sheets("Tabelle1").Select
    ActiveWindow.SelectedSheets.Delete
    Call Copy_Umbennen
    End If
    End Sub
    
    Grüße Andreas
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige