Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1008to1012
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
Gültigskeitsprüfung mit leerer Zelle
14.09.2008 20:56:00
Franz
Guten Abend!
Habe 9 Spalten mit Dropdowns gefüllt. Wie bekomme ich den nachfolgenden Code (Quelle: Archiv) eleganter hin, dh. ohne for next Schleife und dadurch schneller. Der Datenbereich heistt "Printarea".

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
For i = 1 To 9
If Target.Column = i Then
If IsEmpty(Target) Then
MsgBox "Bitte einen Wert aus der Listbox auswählen!"
Application.Undo
End If
'optional
End If
Next
Die Zellen dürfen nie leer stehen. Scheint ein kleines Manko zu sein bei der "starken" Gü _
ltigskeitsprüfung.
End Sub


Tschüss!
Franz D.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gültigskeitsprüfung mit leerer Zelle
14.09.2008 21:30:55
Chris
Hallo was hälst du davon.Ist ohne Schleife.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Set rngAll = Range("A:I")'Spalten 1 bis 9
If Intersect(rngAll, Target) Is Nothing Then Exit Sub
If IsEmpty(Target) Then
MsgBox "Bitte einen Wert aus der Listbox auswählen!"
Application.Undo
End If
End Sub


gruß Chris

AW: Gültigskeitsprüfung mit leerer Zelle
14.09.2008 23:05:19
Franz
Danke an Chris und Matthias,
da ich mit "Option explicit" arbeite musste ich lediglich noch eine "Dim rngAll as range" ergänzen.
Funktionniert super.
Eine gute Woche mit wenig Stress wünscht
Franz D. aus dem schönen Frankenland.
Anzeige
AW: Gültigskeitsprüfung mit leerer Zelle
15.09.2008 06:31:17
Hajo_Zi
Hallo Franz,
wenn man mit Set arbeitet sollte man vor End Sub auch Set rngAll=Nothing schreiben, laut mener Erfahrung.

Nothing oder nicht Nothing?
15.09.2008 08:09:32
Tino
Hallo Hajo,
gut das du dass mal ansprichst.
Mich würde mal interessieren ob dies wirklich in jedem Fall notwendig ist.
z. Bsp.
Mach ich die Deklarierung direkt in der Sub und verlasse die Sub durch End oder Exit Sub
müsste doch die Variable auf Nothing sein.

Sub Test1()
Dim meRange As Range
Set meRange = Range("A:I")
End Sub


Anders wen ich die Deklarierung außerhalb der Sub mit Dim oder Public mache, dann ist auch nach dem Verlassen der Sub die Variable nicht auf Nothing.


Dim meRange As Range
Sub Test2()
Set meRange = Range("A:I")
End Sub


Theoretisch müsste ich mir im ersten Beispiel das Nothing sparen können.
Was also ist nun richtig und was ist falsch?
Gruß Tino

Anzeige
AW: Nothing oder nicht Nothing?
15.09.2008 08:26:53
Ramses
Hallo
Im Prinzip hast du recht.
Ich denke es geht hier
1.) Um eine saubere nachvollziehbare Programmierung
2.) Wird bei einem Fehler das Makro abgebrochen ist die Variable noch gesetzt und belegt Speicher.
3.) Bei eintreffen von 2, können allenfalls nachfolgende Makros davon betroffen sein.
Ist das Makro 1 regulär zu Ende gelaufen, wird auch die Variable geleert,... aber wie gesagt: hier kommt 1 zum tragen :-)
Gruss Rainer
AW: Nothing oder nicht Nothing?
15.09.2008 08:33:00
Hajo_Zi
Hallo Rainer,
meine Erfahrung sagt mir aber es ist immer notwendig. Ich habe es schon öffters im Internet gelesen. Die Datei ist geschlossen und das VBA Projekt ist immer noch im VBA Editor sichtbar. Mit Nothing war es nicht mehr so.
Gruß Hajo
Anzeige
AW: Nothing oder nicht Nothing?
15.09.2008 08:54:00
Tino
Hallo,
danke für die Rückmeldungen.
Meine Frage bezieht sich nicht direkt auf diesen Beitrag (sorry Franz).
Mir geht es um die Allgemeine Verwendung.
Nach dem verlassen der Sub (mein Beispiel 1) und erneutem Start der Prozedur muss ich dieses Objekt durch Set … erst wieder festlegen da die Variable jetzt leer ist, also müsste diese doch Nothing sein!?
Was aber wirklich im VBA vorgeht (nicht Sichtbar), wen ich die Variable nicht mit Set … Nothing leere würde mich schon mal interessieren.
Gruß Tino
Danke, bestätigt meine Vermutung
15.09.2008 14:48:00
Tino
Hallo,
na dann war mein verdacht richtig, dass die Variable nicht zurückgesetzt werden muss,
da der Speicher beim beenden zurückgesetzt werden muss, Ausnahme Globale variablen außerhalb einer Prozedur.
Gruß Tino

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige