Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
360to364
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
360to364
360to364
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mehrfachbedingung

Mehrfachbedingung
12.01.2004 17:06:14
jenni
Liebe Gemeinde, ich bitte um Tipps zu einer VBA-Lösung für das Abprüfen mehrerer Bedingungen innerhalb einer Zeile. In dieser Zeile gibt es die Zelle in Spalte P, deren Wert auf eine von 26 Möglichkeiten überprüft werden soll. Je nachdem, welcher Wert dort steht, soll in der Zelle der Spalte AB ein entsprechender numerischer Wert eingetragen werden.
Alle Zellen der Spalte AB sind mit einer Gültigkeitsprüfung 'Liste' bereits auf bestimmte Zahlen beschränkt, da der Anwender auch manuell noch nachträglich die Werte ändern können soll - selbst wenn das VBA-Skript zuvor schon einen Wert gesetzt hat.
Für eine Anleitung bin ich dankbar

jenni

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrfachbedingung
12.01.2004 17:17:53
Mac4
Hallo Jenni,
ich nehme an, dass der Eintrag in Spalte AB automatisch nach dem Eintrag in Spalte P erfolgen soll. Dann schlage ich folgendes Makro vor (mußt Du natürlich noch entsprechend anpassen):

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("P:P")) Is Nothing Then
Else
Select Case Target.Value
Case Is = 1: Target.Offset(0, 12).Value = 5
Case Is = 2: Target.Offset(0, 12).Value = 6
End Select
End If
End Sub

Bei Eingabe einer 1 bzw. einer 2 in SpalteP wird in AB der Wert 5 bzw. 6 eingefügt.
Das Makro gehört direkt in die Tabelle (Rechtsklick auf Tabellenreiter und code einfügen auswählen).
Marc
Anzeige
AW: Mehrfachbedingung
12.01.2004 17:48:20
jenni
Hallo Marc,
danke für dein Vorschlag. In AB erfolgt leider keine Ausgabe irgendwelcher Werte.
(0, 12) heißt 12 Schritte nach rechts?
Und zum Verständnis:
Wenn in P5 ein "A" steht, setze in AB5 eine "52".

Angepasstes Skript mit Beispieleinträgen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("P:P")) Is Nothing Then
Else
Select Case Target.Value
Case Is = A: Target.Offset(0, 12).Value = 52
Case Is = B: Target.Offset(0, 12).Value = 2
Case Is = C: Target.Offset(0, 12).Value = 52
Case Is = E: Target.Offset(0, 12).Value = 24
Case Is = F: Target.Offset(0, 12).Value = 24
Case Is = G: Target.Offset(0, 12).Value = 4
End Select
End If
End Sub

Anzeige
AW: Mehrfachbedingung
13.01.2004 08:24:04
Mac4
Hallo Jenni,
der Teufel steckt wie so oft im Detail. Wenn Du einer Zelle einen Wert (z.B. A) zuweist, muß der Text in Anführungszeichen geschrieben werden - sonst vermutet VBA hier eine Variabele und zu einer Variabelen A findet er nunmal keinen Wert.
So müsste es gehen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("P:P")) Is Nothing Then
Else
Select Case Target.Value
Case Is = "A": Target.Offset(0, 12).Value = 52
Case Is = "B": Target.Offset(0, 12).Value = 2
Case Is = "C": Target.Offset(0, 12).Value = 52
Case Is = "E": Target.Offset(0, 12).Value = 24
Case Is = "F": Target.Offset(0, 12).Value = 24
Case Is = "G": Target.Offset(0, 12).Value = 4
End Select
End If
End Sub

Marc
Anzeige
VBA: Verweis auf best. Zelle
13.01.2004 09:37:55
jenni
Guten Morgen Marc, danke jetzt klappts!
Excel führt die Prüfung und automatische Ausfüllung immer im Moment des Eintragens eines Wertes in Spalte P aus. Wenn ich jetzt einen Wert, z. B. die 52 ändere, kann ich ihm dann sagen, dass er die Überprüfung erneut vornehmen soll?
Kann ich statt des konkreten Wertes 52 auch eine Tabellenzelle eines anderen Tabellenblattes angeben?
Prinzip:
Case Is = "E": Target.Offset(0, 1).Value = Range("'Tabellenblatt-02!F9")
AW: VBA: Verweis auf best. Zelle
13.01.2004 09:44:49
Mac4
Hallo Jenni,
die erste Frage habe ich nicht verstanden.
Zur zweiten Frage:
Case Is = "E": Target.Offset(0, 1).Value = Sheets("Tabellenblatt-02").Range("F9").Value
Marc
Anzeige
aktualisieren
13.01.2004 09:58:26
jenni
zu 1:
Das automatische Ausfüllen läuft immer, wenn ich in Spalte P Werte eingebe. Wenn ich jetzt nachträglich in VBA Modus eine Angabe ändere, z. B. dass er nicht 52, sondern 53 setzen soll, aktualisiert Excel die Tabelle nicht. Kann man ihn dazu zwingen?
jenni
AW: aktualisieren
13.01.2004 10:15:30
Mac4
Hi Jenni,
fa fällt mir nur eine Krücke ein:
Kopier folgendes Makro ebenfalls direkt in die Tabelle. Jedesmal, wenn Du auf diese Tabelle wechselst, wird dieses Makro gestartet. Es arbeitet vom Prinzip her wie das Change-Ereignismakro d.h ´der Inhalt ist, bis auf die erste Zeile identisch. Setzt leider voraus, dass wenn Du eine Änderung im Change-Makro machst, diese Änderung auch in diesem Makro vornimmst!

Private Sub Worksheet_Activate()
Dim zelle
For Each zelle In Range("P:P")
Select Case zelle.Value
Case Is = "A": zelle.Offset(0, 12).Value = 55
Case Is = "B": zelle.Offset(0, 12).Value = 22
Case Is = "C": zelle.Offset(0, 12).Value = 52
Case Is = "E": zelle.Offset(0, 12).Value = 24
Case Is = "F": zelle.Offset(0, 12).Value = 24
Case Is = "G": zelle.Offset(0, 12).Value = 4
End Select
Next
End Sub

Marc
Anzeige
danke Marc (o. T.)
13.01.2004 10:22:11
jenni
aktualisieren
13.01.2004 10:09:46
jenni
zu 1:
Das automatische Ausfüllen läuft immer, wenn ich in Spalte P Werte eingebe. Wenn ich jetzt nachträglich in VBA Modus eine Angabe ändere, z. B. dass er nicht 52, sondern 53 setzen soll, aktualisiert Excel die Tabelle nicht. Kann man ihn dazu zwingen?
jenni
Mehrfachbedingung und Mehrfachfolge
13.01.2004 10:32:14
jenni
Bin heute Morgen noch auf ein anderes Problem gestoßen, und zwar mehrere Zellen in Abhängigkeit von der Bedingung mit Werten zu füllen.
Konkret:
Marcs Vorschlag für einfache Folgeaktion (in Spalte AB)
Case Is = A: Target.Offset(0, 12).Value = 52
konnte ich bisher weder mit And noch mit Schleife noch mit einer zweiten Funktion auf eine zweite Folgeaktion erweitern. Gewollt ist, dass eine weitere Zelle automatisch gefüllt wird.
Case Is = A: Target.Offset(0, 13).Value = Beispieltext
Diese Zelle kann nicht in Abhängigkeit von derjenigen in Spalte AB gefüllt werden, da sie bereits mit Formeln bestückt ist.
danke für alle guten Vorschläge

jenni
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige