Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Bereich per INPUTBOX markieren und auswerten
05.06.2008 15:07:35
NoNet
Hallo Leute,
per Application.InputBox("Text",Type:=8) kann man (ähnlich eines RefEdit-Steuerelementes) einen Tabellenbereich markieren .
Sofern man tatsächlich einen Bereich markiert, kann man diesen als RANGE-Objekt weiter verarbeiten, sihe Code :
Sub AuswahlPerInputbox()
    Dim rngZelle As Range
    Set rngZelle = Application.InputBox("Bitte Zelle auswählen", Type:=8)
    MsgBox rngZelle.Address
End Sub
Mit welchem Code kann man jedoch reagieren, wenn diese Inputbox abgebrochen wird ?
Dann bricht das Makro mit einer Fehlermeldung ab. Das kann man zwar per On Error Resume Next unterbinden, ist allerdings alles andere als elegant .
Nun habe ich schon versucht dies über eine temp. VARIANT-Variable und Auswertung per TYPENAME(TempVar) zu lösen, aber es ist mir leider nicht gelungen .
Kann mir bitte jemand auf die Sprünge helfen (OHNE "On Error...." !).
Danke, Gruß NoNet
PS : Dazu angetrieben wurde ich durch folgende Fragen :
https://www.herber.de/forum/messages/983617.htm
http://www.ms-office-forum.net/forum/showthread.php?t=233062l

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich per INPUTBOX markieren und auswerten
05.06.2008 15:51:00
NoNet
Danke Nepumuk,
Beispiel3 war genau das, was ich suchte (auch die anderen beiden Code-Beispiele sind interessant).
Auf den Umweg per Collection wäre ich selbst wohl als letztes gekommen.
Habe nun nur das von mir verhasste "Exit Do" und "Exit Sub" durch eine Boole'sche Abbruchbedingung ersetzt, so sieht der Code nun aus :

Sub Beispiel3()
'Bereich per Application.Inputbox markieren und auswerten
'http://www.office-loesung.de/ftopic232480_0_0_asc.php&sid=42aa3a86b36a838eee5062afe393bba7#921820
'12.08.2008, Nepumuk
Dim objRange As Range
Dim bolCancel As Boolean 'ergänzt von NoNet, 05.06.2008
Dim objRangeCollection As Collection
Set objRangeCollection = New Collection
bolCancel = False 'ergänzt von NoNet, 05.06.2008
Do
objRangeCollection.Add 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)
bolCancel = True 'ergänzt von NoNet, 05.06.2008
ElseIf IsEmpty(objRangeCollection(objRangeCollection.Count)) Then
MsgBox "Objektzuweisung fehlgeschlagen. Bitte nochmal versuchen", _
vbCritical, "Fehlermeldung"
ElseIf Not objRangeCollection(objRangeCollection.Count) Then
bolCancel = True 'cancelbutton pressed - ergänzt von NoNet, 05.06.2008
Else
MsgBox "Fehler " & CStr(vbObjectError) & vbLf & vbLf & _
"Unbekannter Objektfehler beim zuweisen eines Bereiches.", _
vbCritical, "Fehlermeldung"
bolCancel = True 'ergänzt von NoNet, 05.06.2008
End If
Loop Until bolCancel
MsgBox "Bereich " & objRange.Address & " markiert"
End Sub


Gruß, NoNet

Anzeige
AW: Bereich per INPUTBOX markieren und auswerten
05.06.2008 16:04:00
Nepumuk
Hallo NoNet,
ist ja niedlich, so hast du die Fehlermeldung von der Inputbox zur Msgbox verlagert. Denn wenn du auf Abbrechen drückst, oder bei der Bereichszuweisung ein Fehler passiert, dann ist objRange ja Nothing und die Abfrage der Adresse erzeugt einen Fehler 91 (Objekt ist leer).
Und, wozu eigentlich die Zuweisung False an die boolsche Variable? Das ist doch sowieso ihr Defaultwert nach der Initialisierung. In anderen Sprachen z.B. Assembler ist so etwas notwendig, aber doch nicht in VB.
Gruß
Nepumuk

OK, OK - hatte das zuerst getestet...
05.06.2008 16:22:56
NoNet
Hey Nepumuk,
heute gibste mir aber echt was auf meine viel zu warme Mütze ;-)
Das "Exit Sub" hatte ich erst nach dem Testen entfernt...
Habe jetzt ein intCancel (mit Werten 0,1,2) anstatt bolCancel eingebaut und das funktioniert einwandfrei :-)
Die DEFAULT-Wertzuweisung habe ich aus reiner Ordentlichkeit vorgenommen - wohlwissend, dass eine Boole'sche Variable standardmässig den Wert FALSE beinhaltet.
Danke nochmal, Salut, NoNet
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige