Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

3fach Prüfung mit VBA Array - absolutes Neuland

3fach Prüfung mit VBA Array - absolutes Neuland
13.05.2008 19:14:00
Andreas
Hallo Herber Fans,
ich versuche, eine Array- Formel in VBA abzubilden. Als Formel habe ich das schon oft hinbekommen, aber in VBA ist das absolutes Neuland. Habe über die Hilfe auch schon Bruchstücke dieser Code- Technik mir angelesen, aber ohne ein funktionierendes Beispiel erschließt sich es mir nicht.
Ich habe einen Bereich von 10 Zellen, die von mir aus einer Application Inputbox als Range („TEST2“) festgelegt werden. Wenn in irgendeiner dieser Zellen entweder nichts drin steht (ISTLEER), eine 0 drin steht oder ein Buchstabe, dann soll das über eine IF Prüfung festgestellt werden. In der Formel erscheint dann eine Meldung in der Zelle. In der VBA Umgebung würde ich dafür eine Msgbox nehmen. Über eine For Each Schleife würde es gehen, aber analog zur Formelwelt denke ich, ist ein Array eleganter.
Wie muß ein solches Array aussehen, um die Formel in aus Zelle D1 zu ersetzen?
Vielen Dank für Eure Ideen und Anregungen.
https://www.herber.de/bbs/user/52325.xls
Grüße, Andreas

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 3fach Prüfung mit VBA Array
13.05.2008 20:50:00
Erich
Hallo Andreas,
eine Möglichkeit ohne Array (im Prinzip erstellt mit Makroaufzeichnung):

If Evaluate("SUM(--(TEST2=0),--(ISBLANK(TEST2)),--(ISTEXT(TEST2)))") > 0 Then
MsgBox "Nicht erlaubte Werte"
Else
MsgBox "alles OK"
End If

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: 3fach Prüfung mit VBA Array
13.05.2008 21:05:42
Andreas
Hallo Erich,
vielen dank für Deine Antwort. Ich hatte auch schon überlegt, einfach die Formel mit Anführungsstrichen nach VBA zu übernehmen. Aber ich weiß nicht, ob das in diesem Fall geht. Der Range „TEST2“ ist ja fest auf dem Blatt definiert.
Der Range, der im VBA geprüft werden soll, ändert sich mit jedem neuen Aufrufen der Inputbox. Das ist ein Array im Makro an sich vielleicht besser. Der durch die Inputbox definierte Range wird ja nicht in den Bereich geschrieben (Namen; definieren), wo TEST2 derzeit steht.

Sub EinenRangeTesten ()
Dim TESTRANGE as Range
On Error Resume Next
Set TESTRANGE = Application.InputBox("Bitte den zu prüfenden Range markieren:" & vbLf & _
"Abbrechen verläßt den Dialog.", "Wiederholungszeilen", Type:=8)
On Error GoTo 0
If TESTRANGE Is Nothing Then
MsgBox "Es wurde nichts gewählt"
Exit Sub
Else
Prüfung von „TESTRANGE“ wie in der Formel realisiert
End Sub


Überdies möchte ich diese Möglichkeit der VBA Programmierung auch lernen. Und wenn ich den Code sehe und dazu in Relation setze, wie die Formel arbeitet, lerne ich es immer ganz gut.
Kannst Du einen solchen Code schreiben?
Vielen Dank und Grüße, Andreas Hanisch

Anzeige
AW: 3fach Prüfung mit VBA Array - absolutes Neuland
13.05.2008 21:58:50
Peter
Hallo Andreas,
markiere deinen zu prüfenden Bereich und lass das Makro laufen

Public Sub Test_3_fach()
Dim Bereich  As Range
Dim rZelle   As Range
Dim bFehler  As Boolean
Set Bereich = Selection
bFehler = False
For Each rZelle In Bereich
If rZelle.Value = 0 Then
bFehler = True
Exit For
ElseIf Len(Trim(rZelle)) = 0 Then
bFehler = True
Exit For
ElseIf Not IsNumeric(rZelle.Value) Then
bFehler = True
Exit For
End If
Next rZelle
If bFehler = False Then
Range("D2").Value = "alles OK"
Else
Range("D2").Value = "NICHT erlaubte Werte"
End If
End Sub


Gruß Peter

Anzeige
AW: 3fach Prüfung mit VBA Array - absolutes Neuland
13.05.2008 22:37:11
Josef
Hallo Andreas,
vielleicht so.
Function test() As Boolean
Dim rng As Range
Dim res As Variant

On Error Resume Next
Set rng = Application.InputBox("Bitte Bereich auswählen", "Auswahl", Type:=8)
On Error GoTo 0

If Not rng Is Nothing Then
    res = Application.CountIf(rng, 0) + Application.CountIf(rng, "") + Application.CountIf(rng, "*")
    test = res = 0
End If


End Function


Sub abc()
MsgBox "Bedingung " & IIf(test, "", "nicht ") & "erfüllt"
End Sub


Gruß Sepp



Anzeige
AW: 3fach Prüfung mit VBA Array - absolutes Neulan
14.05.2008 08:46:00
Renee
Hallo Andreas,
Ich frage mich, wieso du das in einer Prozedur (Sub) und nicht in einer Funktion lösen willst.
Die Funktion hat doch den Vorteil, das sie unabhängig von einer 'Selection' arbeitet und wie eine Formel funktioniert. Ein Inputparameter, der als Range definiert ist, ist im Prinzip nichts anderes als ein Array, mit dem Vorteil, das er völlig variabel ist und wie in einer Formel ausgewählt werden kann. Also würde ich es wie unten machen und damit kannst du in eine Zelle schreiben =arrTest(Bereich). Das ist keine Arrayformel, aber eine Funktion, die einen Array nach deinen Forderungen testet. Der Unterschied zwischen Array-Formel und Formel die einen Array bearbeitet ist eh nur subtil.

Function arrTest(rngInput As Range) As String
If Application.CountIf(rngInput, 0) + _
Application.CountIf(rngInput, "") + _
Application.CountIf(rngInput, "*") = 0 Then
arrTest = "alles OK"
Else
arrTest = "Nicht erlaubte Werte"
End If
End Function


GreetZ Renée

Anzeige
AW: 3fach Prüfung mit VBA Array - absolutes Neulan
14.05.2008 09:36:54
Andreas
Ein Guten Morgen an die fleißigen Antworter,
vielen Dank für Euer aller Rückmeldungen. Ich habe alle Codes und Functions in den VBA Editor übernommen und bin am Testen. Sie laufen alle gut durch. Interessant ist der Ansatz über eine Function. Ich hatte das bisher nie in Betracht gezogen, obwohl ich es schon einige Male hätte gebrauchen können. Werde mir heute dazu noch mehr Informationen anlesen.
Das Problem mit der Prüfung des Ranges ist somit gelöst und ich habe den Einstieg in Formeln und Arrays.
Vielen Dank Euch Allen!!!
Grüße, Andreas Hanisch

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige