Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1272to1276
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
Inhaltsverzeichnis

Anstelle fixem Argument Bedingung inkl. Operator

Anstelle fixem Argument Bedingung inkl. Operator
Peter
Guten Tag

Mit untenstehendem Sub kann ich innerhalb einem Bereich gewisse Zellen, die ein bestimmtes Kriterium erfüllen, einem wneuen Bereich zuordnen.
Wenn ich beispielsweise das 4. Argument mit "ABC" übergebe, werden alle Zellen mit dem Eintrag "ABC" innerhalb des übergebenen Ranges "sGross" dem neuen Bereich "sKlein" zugeordnet.
Nun möchte ich mit sID nicht nur ein fixes Kriterium übergeben können, sondern eine Bedingung.
Beispiel: innerhalb dem Range "sGross" sollen alle Zellen dem Range "sKlein" zugeordnet werden, sofern in der Zelle ein Wert gleich oder grösser 0.25 enthalten ist.
Wie muss ich mein Sub anpassen? Kann ich den Operator auch mit dem Sub als Argument übergeben (z.B. als 5. Argument?
Das würde dann heissen:
Sub DefBereichInBereich(sGross as String, sKlein As String, sTabNam as String, sID, sOp as String)
Call DefBereichInBereich("Abweichung", "zuHoch", "Tabelle1", 0.25, ">=")
Wie müsste ich in diesem Fall sOp in der Zeile If rngCell.Text = sID Then verwenden?
Danke für eine Antwort.
Gruss, Peter

Sub DefBereichInBereich(sGross As String, sKlein As String, sTabNam As String, sID As String)
Dim rngCell As Range, rngL As Range
For Each rngCell In Range(sGross)
If rngCell.Text = sID Then
If rngL Is Nothing Then
Set rngL = rngCell
Else
Set rngL = Union(rngL, rngCell)
End If
End If
Next
If Not rngL Is Nothing Then
Names.Add sKlein, RefersTo:=Sheets(sTabNam).Range(rngL.Address(True, True))
End If
End Sub

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

Betreff
Benutzer
Anzeige
2 Möglichkeiten, ...
24.07.2012 13:16:33
Luc:-?
…Peter,
1. wie von dir angedacht,
2. mit Evaluate bei genereller Ergänzung von sID durch den Operator (wenn er fehlt → Default = voranstellen)
Warum .Text mit 0.25 vgl? Letzteres ist eine Zahl, Ersteres nicht!
zu 1. Da musst du mit Select Case sOp alle Varianten abfragen und denen dann die jeweilige Operation zuordnen.
zu 2. If Evaluate(CStr(rngCell) & sID) Then
Gruß Luc :-?
AW: 2 Möglichkeiten, ...
24.07.2012 22:31:29
Peter
Hallo Luc
Danke für die Antwort.
Zu "Warum .Text mit 0.25"
Das Argument sID war bis jetzt immer ein Text-String. Soll ich die Dimensionierung weglassen, wenn es sowohl als auch sein kann?
Punkt 2. mit Evaluate habe ich nicht verstanden. Könntest du das anhand eines Beispiels konkretisieren?
Danke und Gruss, Peter
Anzeige
Du hast die Bedeutung von .Text missverstanden,...
25.07.2012 16:17:40
.Text
…Peter!
Das gibt den formatierten Inhalt der Zelle wieder und der ist immer Text. Richtig wäre eigentl .Value bzw weglassen. Falls es sich beim Zellinhalt aber um reinen Text handelt, dessen Darstellungsbild nicht durch benutzerdefinierte Formatierung verändert wurde, wäre es egal. Du vglst aber mit einer Zahl und "0,25" ist eben nicht gleich 0,25! Wenn man in VB eine Zahl in einen String umwandeln will, kann man die vbKonversionsfkt CStr benutzen.
Evaluate ist ebenfalls eine vbFkt. Dazu solltest du die VBE-Hilfe nachlesen. Im Prinzip fktt sie genauso wie die alte XLM-Fkt AUSWERTEN (nur in benannten Fmln anwendbar → Namen!), nur mit Argument „Fml als Text“ in US-Notation. Das Konstrukt wertet also deinen Vgl aus. Dabei sollte entweder True oder False herauskommen, wovon dann der weitere Pgmablauf abhängig gemacht wdn kann.
Gruß Luc :-?
PS: Für Evaluate-Anwendung gibt's auch etliche Bspp im Archiv!
Anzeige
AW: Du hast die Bedeutung von .Text missverstanden,...
25.07.2012 19:50:27
.Text
Hallo Luc
Dankeschön! Ich werde weiter daran arbeiten
Gruß, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige