Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
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

Macro unterbrechen um Werte einzufügen

Macro unterbrechen um Werte einzufügen
17.11.2020 18:26:07
MiSch
Liebe Helfende,
ich komme leider nicht weiter.
Im Verlauf eines Codes sollen Daten aus einer anderen Exceldatei eingefügt werden.
Diese Werte haben allerdings keinen konstanten Ursprung, so dass der Nutzer diese im Verlauf händisch auswählt, möglicherweise auch noch in die Zwischenablage kopiert. Danach sollen die auswählten Daten in das Zielarbeitsblatt kopiert werden. So weit meine Idee, der Umsetzung. Vielleicht ist hier schon der Fehler...
Durch meine Recherche habe ich gelernt, dass ich zwar den Code mittels Msgbox unterbrechen und den User auffordern kann die Auswahl zu treffen - allerdings ist die msgbox modal, so dass ich nicht auf xls zugreifen kann.
Ähnliche Fragen wurden in Foren mit der Idee einer Userform statt msgbox beschrieben. Die UF braucht die Eigenschaft vbmodeless bzw. ShowModal auf False setzen. Nun sollte ich auf die Tabelle zugreifen können. Allerdings läuft der Code bei ShowModal false durch und ignoriert die UF und die "Pause" in der ich die Auswahl treffen wollte.
Wie läßt sich das Problem lösen?
Danke, viele Grüße
Michael

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macro unterbrechen um Werte einzufügen
17.11.2020 18:42:48
Nepumuk
Hallo Michael,
ein Beispiel:
Public Sub Beispiel()
    Dim lngIndex As Long
    Dim objRange As Range
    For lngIndex = 1 To 10
        If lngIndex = 5 Then
            Set objRange = Application.InputBox(Prompt:="Bereich auswählen.", Title:="Auswahl", Type:=8)
            objRange.Copy
        End If
    Next
End Sub

Gruß
Nepumuk
Anzeige
AW: Macro unterbrechen um Werte einzufügen
17.11.2020 20:46:57
MiSch
Klasse! Vielen Dank Nepumuk,
Erledigt genau auf einfache Weise mein Problem.
Vielleicht lerne ich noch etwas mehr...
Was macht der lngIndex in deinem Beispiel? Ich konnte keinen Unterschied erkennen wenn ich die Schleife vom Index weglasse (klar es gibt keine Schleife - aber sonst...)?
Noch eine Unklarheit - vielleicht habe ich auch falsch gesucht; aber ich habe im Netz nur Antworten gefunden die ähnliche Probleme mit einer UF mit showModal false lösen wollen - was bei mir nicht funktionierte... Weißt du mit deiner Erfahrung ob das auch über eine solche UF ginge?
Viele Grüße
Michael
Anzeige
AW: Macro unterbrechen um Werte einzufügen
17.11.2020 20:54:10
Nepumuk
Hallo Michael,
in einem modalen Userform mit einem RefEdit-Control ginge es. Das hat die selbe Eigenschaft wie die Inputbox-Methode von Type 8.
Das mit der Schleife war nur ein Beispiel wie Code unterbrochen und auf eine Aktion des Users gewartet wird.
Gruß
Nepumuk
AW: Macro unterbrechen um Werte einzufügen
17.11.2020 21:29:32
MiSch
Danke Nepumuk!
Beim Einbau in meinen Code fällt ein Unterschied auf.
Verwende ich dein Beispiel (nur deine wenige Zeilen) umhüllt den markierten Bereich eine gestrichelte Linie. Füge ich deine Zeilen in mein Makro ein fehlt diese Markierung. Ich habe auch das Public vor mein Sub gefügt. Macht jedoch keinen Unterschied. Hast du eine Idee warum die Markierung (die finde ich hilfreich) bei meinem Code fehlt?
das ist der Code bis zur Stelle:
Public Sub Probe_einfügen()
'Probennamen aus Probensammelliste (EA) kopieren -> einfügen mit Makro
Dim Anzahl As Integer         'Anzahl Proben
Dim Spalte As Integer        'Laufzahl Spalte
Dim rngSpalte As Range          'letzte Spalte
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ThisWorkbook.Sheets("Hilfstabelle").Range("A:A").ClearContents
Set rngEnde = ActiveSheet.Range("I8:CZ8").Find("Vorwarngrenze")
If rngEnde.Column > 10 Or Cells(8, 9).Value  "" Then
MsgBox "Es gibt schon Proben! Neue Vorlage oder 'Neue Spalte erzeugen' verwenden"
GoTo Ende
Else
End If
Dim objRange As Range
Set objRange = Application.InputBox(Prompt:="Bereich auswählen.", Title:="Auswahl", Type:=8) _
objRange.Copy

Viele Grüße
Michael
Anzeige
AW: Macro unterbrechen um Werte einzufügen
17.11.2020 21:36:48
Nepumuk
Hallo Michael,
so?
Public Sub Probe_einfügen()
    'Probennamen aus Probensammelliste (EA) kopieren -> einfügen mit Makro
    
    Dim Anzahl As Long 'Anzahl Proben
    Dim Spalte As Long 'Laufzahl Spalte
    Dim rngSpalte As Range 'letzte Spalte
    Dim objRange As Range
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    
    ThisWorkbook.Sheets("Hilfstabelle").Columns(1).ClearContents
    
    
    
    Set rngEnde = Range("I8:CZ8").Find("Vorwarngrenze")
    If rngEnde.Column > 10 Or Cells(8, 9).Value <> "" Then
        MsgBox "Es gibt schon Proben! Neue Vorlage oder 'Neue Spalte erzeugen' verwenden"
        GoTo Ende
    End If
    
    Set objRange = Application.InputBox(Prompt:="Bereich auswählen.", Title:="Auswahl", Type:=8)
    
    objRange.Copy
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Macro unterbrechen um Werte einzufügen
17.11.2020 21:59:39
MiSch
Danke Nepumuk,
allerdings wird nicht direkt beim Führen der Maus der Bereich markiert, sondern erst nach Ausführen der Zeile objRange.copy.
Irgendwie wäre es schön eine optische Kontrolle zu haben ob man den richtigen Bereich auswählt.
Hast du noch eine Idee?
Viele grüße
Michael
AW: Macro unterbrechen um Werte einzufügen
18.11.2020 07:54:30
Nepumuk
Hallo Michael,
nein.
Gruß
Nepumuk
Application.ScreenUpdating = False
18.11.2020 08:11:32
MiSch
Hallo Nepumuk,
ich habe nach und nach die Zeilen kommentiert/entkommentiert
Der Befehl Application.ScreenUpdating = False bewirkt, dass die Markierung mit der Mausbewegung nicht sichtbar wird.
Gibt es einen alternativen Befehl oder die Möglichkeit das Screenupdating nur auf die ausführende Excelmappe zu begrenzen?
Viele Grüße
Michael
Anzeige
AW: Application.ScreenUpdating = False
18.11.2020 08:14:01
Nepumuk
Hallo Michael,
nein das geht nicht. Aber was hält dich davon ab das ScreenUpdating vor der Inputbox ein und danach wieder auszuschalten?
Gruß
Nepumuk
AW: Application.ScreenUpdating = False
18.11.2020 08:24:09
MiSch
Gute Idee Nepumuk!
Michael
AW: Macro unterbrechen um Werte einzufügen
18.11.2020 08:21:59
MiSch
Hallo Nepumuk,
sorry, wie krieg ich das "Abbrechen" hin. auch wie bei der msgbox vbcancel? if.... = cancel then
ich finde kein Beispiel nur welche mit On Error GoTo ERRORHANDLER.
Viele Grüße
Michael
AW: Macro unterbrechen um Werte einzufügen
18.11.2020 08:28:46
Nepumuk
Hallo Michael,
ein Beispiel:
Public Sub Beispiel3()
    Dim objRange As Range
    Dim objRangeCollection As Collection
    Set objRangeCollection = New Collection
    Do
        Call objRangeCollection.Add(Item:=Application.InputBox(Prompt:= _
            "Bitte die Quellspalte(n) markieren", Title:="Auswahl", Type:=8))
        If TypeOf objRangeCollection(objRangeCollection.Count) Is Range Then
            Set objRange = objRangeCollection(objRangeCollection.Count)
            Exit Do
        ElseIf IsEmpty(objRangeCollection(objRangeCollection.Count)) Then
            Call MsgBox("Objektzuweisung fehlgeschlagen. Bitte nochmal versuchen", _
                vbCritical, "Fehlermeldung")
        ElseIf Not objRangeCollection(objRangeCollection.Count) Then
            Set objRangeCollection = Nothing
            Exit Sub 'cancelbutton pressed
        Else
            Call MsgBox("Fehler " & CStr(vbObjectError) & vbLf & vbLf & _
                "Unbekannter Objektfehler beim zuweisen eines Bereiches.", _
                vbCritical, "Fehlermeldung")
            Set objRangeCollection = Nothing
            Exit Sub
        End If
    Loop
    Set objRangeCollection = Nothing
    Call MsgBox("Bereich " & objRange.Address & " markiert")
End Sub

Gruß
Nepumuk
Anzeige
Danke!
18.11.2020 12:23:07
MiSch
Danke Nepumuk!
Da hangele ich mich mal durch
VG, Michael

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige