Zellbereich selektieren mit Applicaton.Inputbox

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
InputBox MsgBox
Bild

Betrifft: Zellbereich selektieren mit Applicaton.Inputbox
von: Esmo
Geschrieben am: 26.10.2015 16:00:45

Moin!
Der Benutzer soll einen Zellbereich selektieren. Wenn ich dafür Application.Inputbox verwende, möchte ich die zwei Fälle abfangen, daß der Benutzer entweder "Abbrechen(Cancel)" drückt oder ohne etwas eingegeben zu haben, "OK"drückt.
Nach diversen Suchen im Netz habe ich folgendes versucht:

  
Dim answer as variant
Dim dzell as range
answer = Application.InputBox("Please select the cells of the table for the autofilter:", " _
Which table?", , , , , , 8)
    If answer <> False Then
      If answer = "" Then
        MsgBox "You selected nothing - aborting!", vbOKOnly + vbInformation
        Exit Sub
      Else
        Set dzell = answer
      End If
    Else
      MsgBox "You cancelled - aborting!", vbOKOnly + vbInformation
      Exit Sub
    End If

dann kann ich zwar "Abbrechen" und die leere Eingabe abfangen, aber wenn ich einen Bereich _ selektiere, macht er mir einen Typ-Mismatch. Wenn ich dann mit

On Error Resume Next
arbeite, muß ich auch mit

Application.Displayalerts=False

arbeiten, weil er sonst einen Fehler bei dem Versuch der leeren Eingabe bringt - und zwar einen in Excel, den ich nicht abfangen kann.
Hat mir jemand einen Tipp, wie ich das lösen kann?
Gruß
Ralph

Bild

Betrifft: AW: Zellbereich selektieren mit Applicaton.Inputbox
von: Daniel
Geschrieben am: 26.10.2015 16:48:57
Hi
OK ohne Eingabe eines Zellbereichs fängt das System für dich automatisch ab.
der Anwendern kann die Inputbox nur verlassen, wenn er entweder ABBRECHEN klickt oder OK klickt und einen Zellbereich ausgewählt hat.
bei OK ohne eine Auswahl eines Zellbereichs kann der Anwender die Inputbox nicht verlassen, sondern er wird zu einer erneuten Eingabe aufgefordert, aber das macht VBA selbst, dass musst du nicht programmieren.
da du einen Zellbereich auswählst, musst du diesen auch mit SET der Variable zuweisen:


Dim answer as Range
on Error Resume Next
set answer = Application.Inputbox("...", Type:=8)
On Error Goto 0
if answer is Nothing then
    Msgbox "Abbruch"
    Exit sub
else
    set dzell = answer
End if
Gruss

Bild

Betrifft: AW: Zellbereich selektieren mit Applicaton.Inputbox
von: Nepumuk
Geschrieben am: 26.10.2015 18:39:21
Hallo,
das geht auch ohne On Error - Anweisung:

Public Sub test()
    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
            MsgBox "Objektzuweisung fehlgeschlagen. Bitte nochmal versuchen", _
                vbCritical, "Fehlermeldung"
        ElseIf Not objRangeCollection(objRangeCollection.Count) Then
            Exit Sub 'cancelbutton pressed
        Else
            MsgBox "Fehler " & CStr(vbObjectError) & vbLf & vbLf & _
                "Unbekannter Objektfehler beim zuweisen eines Bereiches.", _
                vbCritical, "Fehlermeldung"
            Exit Sub
        End If
    Loop
    Set objRangeCollection = Nothing
    MsgBox "Bereich " & objRange.Address & " markiert"
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Zellbereich selektieren mit Applicaton.Inputbox
von: Esmo
Geschrieben am: 26.10.2015 22:36:40
Hallo Nepomuk,
heißt das, in diesem Fall sorgt also die Call Collection.Add Anweisung dafür, daß Excel ohne Fehlermeldung weitermacht und ich das Ergebnis dem Resultat (Status der Collection) entnehmen kann, korrekt?
Ist natürlich eleganter als die On Error, die sowieso nicht ganz funktioniert.
Gruß
Ralph

Bild

Betrifft: AW: Zellbereich selektieren mit Applicaton.Inputbox
von: Nepumuk
Geschrieben am: 27.10.2015 07:29:58
Hallo,
die Meldung von Excel wenn du nichts ausgewählt hast und trotzdem auf OK klickst kann ich damit auch nicht unterdrücken. Aber die Collection frisst erst mal alles. Teste es einfach mal.
Gruß
Nepumuk

Bild

Betrifft: AW: Zellbereich selektieren mit Applicaton.Inputbox
von: Esmo
Geschrieben am: 26.10.2015 18:46:01
Moin!
Die Zuweisung habe ich gemacht, aber ich wollte eigentlich unterscheiden, ob jemand "Cancel" drückt oder nicht. Die Fehlermeldung im Excel ist auch total irreführend, von wegen "Eingegebene Formel falsch etc.".
Dann muß ich mich damit begnügen, daß ich einfach nicht unterscheiden kann, was passiert ist.
Es gibt im Netz diese Abfragen mit


answer = False
bzw.

answer<>false
, aber da bekomme ich einen Type-Mismatch (Err.NO 13), wenn ich etwas eingebe. Das will ich ja auch nicht.
Vielen Dank Daniel, dann mache ich wie Du geschrieben hast.
Gruß
Ralph

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zellbereich selektieren mit Applicaton.Inputbox"