Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
788to792
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
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Gefuellte Zellen einer Spalte auf Wert untersuchen

Gefuellte Zellen einer Spalte auf Wert untersuchen
09.08.2006 05:16:01
Tobias
Hallo Forum,
ich stecke gerade in dem Problem, dass ich den Autofilter per VBA auf mehrere Spalten nacheinander anwenden will. Hierfuer muss ich die jeweils verbleibenden Moeglichkeiten abfragen. Dies mache ich mit Application.Match(gesucht,Bereich,0)
Dieses Kommando klappt aber nicht immer, und ich habe auch keine Beschreibung dafuer gefunden (link?). Gibt es noch einen anderen Befehl, der mir einen festgelegten Wert in allen sichtbaren, mit werten gefuellten Zellen einer bestimmten Spalte sucht? (Rueckgabe ja/nein ausreichend)
Ich glaube, ich stehe hier gewaltig auf dem Schlauch, aber auch die verflixte VBA-Hilfe kann ihrer Bestimmung dabei nicht wirklich gerecht werden.
Danke schonmal!
tobias

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

Betreff
Datum
Anwender
Anzeige
AW: Gefuellte Zellen einer Spalte auf Wert untersu
09.08.2006 07:58:04
Ramses
Hallo
Application.Match kann nicht funktionieren, weil es das nicht gibt.
Aus der Hilfe
Verwenden Sie eine Arbeitsblattfunktion, die einen Bereichsbezug als Argument fordert, so müssen Sie ein Range-Objekt festlegen. Sie können z.B. die Arbeitsblattfunktion VERGLEICH (Match in VBA) verwenden, um einen Zellbereich zu durchsuchen. In eine Zelle eines Arbeitsblattes würden Sie dazu eine Formel wie =VERGLEICH(9,A1:A10,0) eingeben. In einer Prozedur in Visual Basic jedoch legen Sie ein Range-Objekt fest, um das gleiche Ergebnis zu erhalten.

Sub FindFirst()
myVar = Application.Worksheet

Function _
.Match(9, Worksheets(1).Range("A1:A10"), 0)
MsgBox myVar
End Sub

Ansonsten verhält sich die Funktion gleich wie Tabellenfunktion "Vergleich", kannst also diese Hilfe verwenden.
Rückgabe "JA/NEIN" kann nicht funktionieren, weil die Funktion die relative Position des Suchbegriffes in deinem Suchbereich zurückgibt.
Um auf das Beispiel von oben zurückzukommen, musst du also abfragen ob das Suchergebnis einen Wert grösser 0 hat. Wird der Begriff nicht gefunden, erhältst du einen Fehler, den du aber vorgänig mit
On Error Resume Next
abfangen kannst, und nach der Funktion die Fehlerbehandlung wieder einschaltest.
Gruss Rainer
Anzeige
AW: Gefuellte Zellen einer Spalte auf Wert untersu
09.08.2006 08:59:43
Tobias
Hallo und vielen Dank.
ich stehe jedoch immernoch auf dem Schlauch. Mittlerweile nur ein bisschen weiter hinten.
Beim folgenden Code ist handle die variablenstruktur, combination das arbeitblatt und k eine konstante.
Dim tmp1 As Variant
tmp1 = Range(handle.combination.Cells(1, k), handle.combination. _
Cells(20, k)).SpecialCells(xlCellTypeVisible)
Ich habe auf die Spalte k-1 bereits einen Autofilter angewandt. Im Debugmodus stehen in tmp1 jedoch nur die Werte bis zur ersten ausgeblendeten Zeile. alles was danach kommt, wird in tmp1 nicht aufgenommen. wieso? (zeile 1 und 20 sind immer sichtbar)
Danke,
tobias
Anzeige
AW: Gefuellte Zellen einer Spalte auf Wert untersu
09.08.2006 20:48:44
Ramses
Hallo
Excel kann damit nichts anfangen.
Was eine Variablenstruktur ist, weiss ich nicht.
Aber es muss heissen
tmp1 = Range(Worksheets(combination).Cells(1, k), Worksheets(Combination).Cells(20, k)).SpecialCells(xlCellTypeVisible)
Was das Handle soll, versteh ich nicht
Gruss Rainer
Geloest: Gefuellte Zellen einer ...
10.08.2006 04:13:50
Tobias
Hallo Rainer,
vielen Dank fuer Die hilfe. Ich habe das Problem soeben geloest.
ich habe CurrentWorkbook.Worksheets("combination").xxx in meiner Variablenstruktur abgelegt(c: struct, excel:type), was aber fuer die Loesung des Problems unerheblich ist.
Die zurueckgegebene Range enthaelt jedenfalls nur die ersten zusammenhaengenden Zellen, mehr nicht, keine Ahnung wieso!
Ich habe mir jetzt mit einer Schleife geholfen:
dim tmp1() as Variant
For j = 3 To maxrow
If Not IsEmpty(.Cells(j, k - 2)) And Not Rows(.Cells(j, k - 2).Row).Hidden Then
ReDim Preserve tmp1(1 To j - 2)
tmp1(j - 2) = .Cells(j, k - 2)
End If
Next j
Das geht.
Ciao,
tobias
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige