Registriert seit: 06.03.2017
Version(en): 2007
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.
Registriert seit: 04.04.2017
Version(en): 2013
07.06.2017, 10:34
(Dieser Beitrag wurde zuletzt bearbeitet: 07.06.2017, 10:34 von Jonas0806.)
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)
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
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
Registriert seit: 06.03.2017
Version(en): 2007
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.
Registriert seit: 04.04.2017
Version(en): 2013
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...
Registriert seit: 06.03.2017
Version(en): 2007
07.06.2017, 12:21
(Dieser Beitrag wurde zuletzt bearbeitet: 07.06.2017, 12:21 von M.Wichmann.)
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.
Registriert seit: 04.04.2017
Version(en): 2013
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
Registriert seit: 06.03.2017
Version(en): 2007
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?
Registriert seit: 04.04.2017
Version(en): 2013
Hallo,
(07.06.2017, 13: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
Registriert seit: 06.03.2017
Version(en): 2007
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?