Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Hilfe bei erweiterung Macro
#1
Guten Morgen,

ich bräuchte Hilfe bei der Erweiterung meiner Macros. Diese benutze ich um einen Text aus der Zwischenablage in Excel einzulesen um diese Daten dann weiterzuverarbeiten. Um die Übersicht im Dokument zu verbessern habe ich das ein und ausblenden eingebaut.
Da diese gleich aufgebaut sind hier mal einer zur Ansicht:

Code:
Sub Auto7506()
'
' Auto7506 Makro
'

   Sheets("7506").Visible = True
   Sheets("7506").Select
   Range("A2:A233").Select
   Selection.ClearContents
   Range("A2").Select
   ActiveSheet.Paste
   Sheets("Termineingabe").Select
   Sheets("7506").Visible = False
End Sub
Da es aber vorkommen kann, das ich Daten nach dem einfügen manuell etwas anpassen muss( doppeltes datum), habe ich mir überlegt, das es zb gut wäre wenn nach dem einfügen eine MSG Box kommt die fragt ob ich anpassen möchte oder nicht. 
Bei nein geht das macro weiter wie gehabt. Bei ja soll die UF zugehn und die Ansicht in den entsprechenden Sheet wechsen.

Da ich das evtl durch viel probieren auf hinbekommen würde, aber ich mir bei einigen Sachen nicht sicher bin, wäre ich dankbar wenn mir jemand Hilfestellung geben könnte.
Antworten Top
#2
Hallo,

meinst Du das so?

Code:
Sub Auto7506()
'
' Auto7506 Makro
'
   With Sheets("7506")
       .Visible = True
       .Range("A2:A233").ClearContents
       .Range("A2").PasteSpecial xlPasteAll
       If MsgBox("Anapssungen notwendig?", vbYesNo + vbQuestion) = vbYes Then Exit Sub
       Sheets("Termineingabe").Activate
       .Visible = False
   End With
End Sub
ps: Merke, Selects sind in den allermeisten Fällen überflüssig, lieber direkt referenzieren (Siehe Code)
Gruß Jonas
Antworten Top
#3
Hallo

der Code müsste auch ohne Blaetter sichtbar machen und Range Select durch direktes kopieren fuınktionieren.
Vorher kommt die MsgBox "Ja/Nein" Abfrage.  Bitte ausprobieren, würde mich freuen wenn es so einfacher klappt.

Um doppelte schneller zu finden markiere ich sie als "dopp" in einer Hilfsspalte, z.B. Spalte C.  Kann jede andere Spalte sein.

mfg Piet

Code:
Sub Auto7506()
'Abfrage ob weiterbearbeiten mit Ja/Nein
If MsgBox("Wollen Sie die neuen Daten bearbeiten ??", vbYesNo) = vbYes Then Exit Sub

'direktes kopieren ohne Select Sheet
Sheets("Termineingabe").Range("A2:A233").Copy
Sheets("7805").Range("A2").PasteSpecial xlPasteAll
Application.CutCopyMode = False

End Sub


'Makro um doppelte in Hilfspalte C zu markieren
Sub doppelte_markieren()
'"dopp" Text in Hilfsspaltye C schreiben
Range("C2:C233").ClearContents
For Each AC In Range("A2.A233")
   If AC.Offset(1, 0) = AC.Value Then AC.Offset(0, 2) = "dopp"
Next AC
End Sub
Antworten Top
#4
Hallo, Danke für die Antworten. Ich habe beide getestet. Und ich habe selber auch schon etwas rumprobiert.

@Gast123  das mit dem Doppel sollte im normalfall eigentlich nicht passieren. Daher wollte ich diesbezüglich keine weiteren Anpassungen in Codes vornehmen. Aber Danke.

@Jonas   Deins scheint zu funktionieren. Aber...   wie ich schon etwas angedeutet habe, starte ich die einzelnen Macros in einer UF. Diese müßte wenn ich auf JA klicke beendet werden und dann die Ansicht in das entsprechende Sheet wechseln.
Bis zur Reaktion auf die Fragestellung scheint deins zu funktionieren. Sheet 7506 blendet wie gewollt je nach Situation ein und aus.

Auch in dem Stand den ich hatte, scheitere ich daran das die UF nicht weggeht. Solange die da ist passiert ja nix weiter mit der Ansicht.
Antworten Top
#5
Hallo,

ich kenne deine Datei nicht... aber grundsätzlich schließt du deine UserForm mit "unload UserForm" bzw. aus dem Klassenmodul heraus mit "unload me". Baue das also einfach mit ein...
Gruß Jonas
Antworten Top
#6
Irgendwie komme ich damit nicht klar. Habe das unload jetzt eingefügt. Aber an der falschen Stelle. UF wird bei "Nein" geschlossen.

Code:
Sub Testing()
'
' Auto7506 Makro
'
  With Sheets("7506")
      .Visible = True
      .Range("A2:A233").ClearContents
      .Range("A2").PasteSpecial xlPasteAll
      If MsgBox("Anpssungen notwendig?", vbYesNo + vbQuestion) = vbYes Then Exit Sub
      Unload UserForm2
      Sheets("Termineingabe").Activate
      .Visible = False
     
  End With
End Sub
Wo muss das hin, damit die UF geschlossen wird wenn ich auf Ja klicke? Habe schon selbst versucht das da irgendwie zwischenzu bauen, aber da kamen immer Fehlermeldungen.

Bei Ja soll ja UF zu gehn und die Ansicht auf das noch geöffnete Sheet 7506 springen.
Antworten Top
#7
Hallo,

Code:
Sub Testing()
'
' Auto7506 Makro
'
   With Sheets("7506")
       .Visible = True
       .Range("A2:A233").ClearContents
       .Range("A2").PasteSpecial xlPasteAll
       If MsgBox("Anpssungen notwendig?", vbYesNo + vbQuestion) = vbYes Then Unload UserForm2: Exit Sub
       Sheets("Termineingabe").Activate
       .Visible = False
   End With
End Sub
Gruß Jonas
Antworten Top
#8
Hallo, danke funktioniert soweit. Ich bin mir auch ziemlich sicher, das ich das zumindest so ähnlich auch versucht hatte.


Aber wie kann ich da noch dazwischenquetschen, das der Sheet 7506 geöffnet wird?
Antworten Top
#9
Hallo,

(07.06.2017, 12:02)M.Wichmann schrieb: Aber wie kann ich da noch dazwischenquetschen, das der Sheet 7506 geöffnet wird?

"Dazwischenquetschen" würde ich das garnicht. Das würde ich dann in einem vollständigen If-Block machen.

Code:
With Sheets("7506")
    .Visible = True
    .Range("A2:A233").ClearContents
    .Range("A2").PasteSpecial xlPasteAll
    If MsgBox("Anpssungen notwendig?", vbYesNo + vbQuestion) = vbYes Then
        Unload UserForm2
        .Activate
        Exit Sub
    End If
    Sheets("Termineingabe").Activate
    .Visible = False
End With
Gruß Jonas
[-] Folgende(r) 1 Nutzer sagt Danke an Jonas0806 für diesen Beitrag:
  • M.Wichmann
Antworten Top
#10
Danke Jonas. Genau so hatte ich mir das gedacht. Aber langsam komme ich rein in VBA^^

Hatte zwischenzeitlich eine Variante probiert mit   Select Case, die war für mich als Anfänger leichter verständlich und anpassbar.


Aber eine Frage hätte ich noch. Nach der Anpassung der einzelnen Blätter habe ich nen Button eingefügt um zum Anfang zu springen.( springe zur ersten Seite / blende Blatt "xxxx" aus/  öffne Userform ) Gibt es einen befehl um das aktuelle Blatt anzusprechen ohne den Namen zu verwenden? Also kann ich ein Macro für alle Blätter nutzen oder muss ich für jedes eins extra erstellen?
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste