PDA

Vollständige Version anzeigen : Einfacher If Then Code funktioniert nicht


Klaudia95
29.08.2017, 09:58
Hallo liebe Excel Experten,

ich bin grade dabei einen einfachen If Then Code zu schreiben, bin aber leider am verzweifeln weil ich blutige anfängerin bin und auch mit googlen nicht weiterkomme.
So sieht mein mini-code bis jetzt aus:

Sub Nummern()
Dim Range As String

If Range("A3") = "Auto" Then
Range("A6").Value = "A620"

If Range("A3") = "Fahrrad" Then
Range("A6") = "B220"
End If
End If

End Sub

Doch leider passiert nichts mit dem Code...
Ich möchte, dass wenn ich ins Feld A3 "Auto" eintrage, automatisch im Feld A6 "A620" eingetragen wird. Und das für ca. 40 verschiedene Werte, deshalb kann ich keine Wenn funktion ohne VBA verwenden...

Schonmal Danke im Voraus für eure Hilfe!!

Jonas0806
29.08.2017, 10:10
Hallo,

verwende bei so vielen Optionen am besten select-case.

Option Explicit

Sub Nummern()
With Range("A6")
Select Case Range("A3").Value
Case "Auto": .Value = "A620"
Case "Fahrrad": .Value = "B220"
Case "Flugzeug": .Value = "Was auch immer"
.
.
.
.
End Select
End Sub

Heidjer
29.08.2017, 10:19
Alternativ zu dem Vorschlag von Jonas kannst du auch eine Liste mit den 40 Werten durchsuchen lassen. Das erspart dir das Erfassen aller 40 Cases im Code von Jonas. In meinem Beispielcode habe ich mal angenommen, dass deine 40 Werte in Spalte C aufgelistet sind und der zugehörige Code in Spalte D.


Sub test()
Dim rng As range

Set rng = ActiveSheet.range("C1:C40").Find(range("A3"))
If Not rng Is Nothing Then
range("A6").Value = Cells(rng.Row, 4)
End If

End Sub

RPP63neu
29.08.2017, 10:27
@Heidjer:
Nur eine Anmerkung:
Bei der Range.Find-Methode muss grundsätzlich zumindest der LookAt:= Parameter angegeben werden, sonst können unerwünschte Effekte auftreten.
Die Einstellungen für LookIn, LookAt, SearchOrder und MatchByte werden gespeichert, sobald Sie diese Methode verwenden. Wenn Sie beim nächsten Aufruf der Methode keine Werte für diese Argumente angeben, werden die gespeicherten Werte verwendet.
Gruß Ralf

Heidjer
29.08.2017, 10:37
@Heidjer:
Nur eine Anmerkung:
Bei der Range.Find-Methode muss grundsätzlich zumindest der LookAt:= Parameter angegeben werden, sonst können unerwünschte Effekte auftreten.

Gruß Ralf

Hallo Ralf,

Das war mir gar nicht bewusst. Gut zu wissen. Das kann gerade in ausführlicheren Codes ja im Zweifel tatsächlich zu einem Problem werden. Wieder etwas gelernt. :-) Danke für den hilfreichen Hinweis.

@Klaudia: Unter Berücksichtigung des Hinweises von Ralf würde ich dann folgendes vorschlagen:
Sub test()
Dim rng As range

Set rng = ActiveSheet.range("C1:C40").Find(range("A3"), LookIn:=xlValues, LookAt:=xlWhole)
If Not rng Is Nothing Then
range("A6").Value = Cells(rng.Row, 4)
End If

End Sub

aloys78
29.08.2017, 10:38
Hallo Klaudia,
Doch leider passiert nichts mit dem Code...
Er wird aber Deine Definition anmeckern:
Dim Range As String
Range kann als VBA-Schlüsselwort nicht als Variable benutzt werden.

Dann zu den Abfragen:
If Range("A3") = "Auto" Then
Range("A6").Value = "A620"

If Range("A3") = "Fahrrad" Then
Range("A6") = "B220"
End If
End If
Er wird nur bei 'Auto' in A3 funktioinieren.

Wenn schon If-Abfragen, dann so:
If Range("A3") = "Auto" Then
Range("A6").Value = "A620"

ElseIf Range("A3") = "Fahrrad" Then
Range("A6") = "B220"

ElseIf Range("A3") = "Flugzeug" Then
Range("A6") = "C220"
End If

Gruß
Aloys

Klaudia95
29.08.2017, 11:05
Danke für die zahlreichen Antworten, doch leider tut sich sowohl beim Code von Jonas (danke für den Tipp mit den Cases!) als auch bei der Alternative von Heidjer nichts... @aloys auch mit elseif tut sich nichts, komisch. Ich hab auch schon eine neue Mappe erstellt weil vielleicht mit meiner Mappe etwas nicht stimmt aber auch hier tut sich nichts... was könnte ich denn falsch gemacht haben?

Vielleicht nochmal was ich genau vorhabe:
Ich habe im Feld A3 eine Dropdownliste. Wenn ich da "Auto" auswähle, möchte ich dass in der leeren Zelle A6 "A620" eingetragen wird. Wenn ich "Fahrrad" auswähle, dann soll in A6 "B220" eingetragen werden. Und so weiter...

aloys78
29.08.2017, 11:20
Hallo Klaudia,
wenn sich nichts tut, dann steht in A3 nichts drin oder kein Inhalt, der abgefragt wird.

Liegt der Code im VBE bei der Tabelle mit dieser Zelle A3 ?

Wenn Du nicht weiterkommst, dann solltest Du eine Beispieldatei zur Verfügung stellen.

Gruß
Aloys

RPP63neu
29.08.2017, 11:22
Moin Klaudia!
Wofür überhaupt VBA?
Sowas erschlägst Du doch mit einer simplen Formel, wenn Du eine Verweistabelle hast!
Datengültigkeit, Liste in A3

<b>Tabelle1</b><br /><br /><table border="1" cellspacing="0" style="font-family:Calibri,Arial; font-size:11pt; background-color:#ffffff; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td><td >C</td><td >D</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td >&nbsp;</td><td >&nbsp;</td><td >Kuh</td><td >Kalb</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td >&nbsp;</td><td >&nbsp;</td><td >Pferd</td><td >Fohlen</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td style="background-color:#c6e0b4; ">Reh</td><td >&nbsp;</td><td >Reh</td><td >Kitz</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td >&nbsp;</td><td >&nbsp;</td><td >Hund</td><td >Welpe</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td style="background-color:#f8cbad; ">Kitz</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr></table><br /><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#fffcf9; color:#000000; "><tr><td ><b>Formeln der Tabelle</b></td></tr><tr><td ><table border = "1" cellspacing="0" cellpadding="2" style="font-family:Arial; font-size:9pt;"><tr style="background-color:#cacaca; font-size:10pt;"><td >Zelle</td><td >Formel</td></tr><tr><td >A6</td><td >=SVERWEIS(A3;C:D;2;0)</td></tr></table></td></tr></table><br /><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#0000ff;background-color:#ffFCF9; color:#000000; "><tr><td ><b>Dateng&uuml;ltigkeit der Tabelle</b></td></tr><tr><td ><table border = "1" cellspacing="0" cellpadding="2" style="font-family:Arial; font-size:9pt;"><tr style="background-color:#cacaca; font-size:10pt;"><td >Zelle</td><td >Zulassen</td><td >Daten</td><td >Eingabe 1</td><td >Eingabe 2</td></tr><tr><td >A3</td><td >Liste</td><td >&nbsp;</td><td >=$C$1:$C$4</td><td >&nbsp;</td></tr></table></td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4.8 </a>

Gruß Ralf

Jonas0806
29.08.2017, 11:34
Hallo,
[...]doch leider tut sich sowohl beim Code von Jonas (danke für den Tipp mit den Cases!) als auch bei der Alternative von Heidjer nichts... @aloys auch mit elseif tut sich nichts, komisch[...]

Ich rate auch nochmal - Wie wird denn dein Code ausgeführt/angetriggert? Kann es sein, dass Du auf gar kein Event reagierst? z.B. Worksheet_SelectionChange, Worksheet_Change oder Ähnliches.

Klaudia95
29.08.2017, 11:54
@RPP63 ach natürlich! der sverweis! Ich war so sehr mit vba beschäftigt dass ich nicht einmal an alle normalen funktionen von excel gedacht habe, wie dumm von mir! Jedenfalls danke für die Idee.
Aber die VBA-Lösungen von euch notiere ich mir trotzdem für den Fall der Fälle irgendwann einmal.

Thema kann geschlossen werden, hat sich erledigt :)