Excel Zellen abfragen und Wert in neue Zelle schreiben

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Excel Zellen abfragen und Wert in neue Zelle schreiben

    Hi,

    bin nicht wirklich fit in VBA aber hoffe ihr :)
    Habe 3 Zellen in Excel.
    Wenn in den Zellen bestimmte Wörter stehen soll in der 4 Zelle ein neuer Wert automatisch geschrieben werden.
    Bekomme einfach nicht drei Zellen abgefragt.

    Sollte so sein
    If ("a1") Sonne And ("b1") König And ("c1") France Then ("D1") = "Sonnenkönig France"


    Quellcode

    1. Sub InhaltChecken2222()
    2. Dim strName As String
    3. If Sheets("Blatt1").Cells(1, 1).Value = "Sonnen" Then
    4. ElseIf Sheets("Blatt1").Cells(1, 2).Value = "König" Then
    5. ElseIf Sheets("Blatt1").Cells(1, 3).Value = "France" Then
    6. End If
    7. strName = Application.InputBox("Name eingeben")
    8. Else
    9. Exit Sub
    10. End If
    11. MsgBox strName
    12. End Sub
    13. Private Sub Worksheet_Change(ByVal Target As Range)
    14. If Target.Address = "$D$1" Then
    15. Application.EnableEvents = False
    16. If Target = "Sonnen König France"" Then Target = "France 4 ever"
    17. Application.EnableEvents = True
    18. End If
    19. End Sub

    interface schrieb:

    If ("a1") Sonne And ("b1") König And ("c1") France Then ("D1") = "Sonnenkönig France"

    Visual Basic-Quellcode

    1. Private Sub Worksheet_Change(ByVal Target As Range)
    2. If Not Intersect(Target, Range("A1:C1") Is Nothing Then
    3. If Range("A1").Value = "Sonne" And Range("B1").Value = "König" And Range("C1").Value = "France" Then Range("D1").Value = "Sonnenkönig France"
    4. End If
    5. End Sub
    Aber ich hoffe, du fängst jetzt nicht an, jede mögliche Kombination in VBA hart zu codieren.

    interface schrieb:

    Application.EnableEvents = False
    ist gefährlich.
    Wenn bei der Ausführung der nachfolgenden Zeilen irgendein Fehler passiert, bleiben die Events für immer aus.
    Deshalb entweder Fehler abfangen oder das Statement gleich weg lassen.
    Am Event-Handling sollte man nur rum spielen, wenn man weiß, was man tut.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Hi,

    Danke, doch das hatte ich vor.
    Bin leider da nicht so gut bewandert wie ihr hier.

    Wenn ich deinen Code probiere erhalte ich aber einen Syntax Fehler in der 1. Zeile.

    Quellcode

    1. Sub Works()
    2. If Not Intersect(Target, Range("C2:E2") Is Nothing Then
    3. If Range("C2").Value = "Sonne" And Range("D2").Value = "König" And Range("E2").Value = "France" Then Range("F2").Value = "Sonnenkönig France"
    4. End If
    5. End Sub


    Wie kann ich den einzelnen Zellen ansprechen welche nicht hintereinander stehen, also B2, G8, U15 und dann in Zelle T88 schreiben.

    Mein Ziel ist es wenn diese drei Zellen befüllt sind dann schreibe folgende Werte.
    Habe das hier versucht aber komme da auch nicht weiter, aber vielleicht ist dass auch ein weg.
    Die class macht einen Fehler oder die Syntax ist falsch.

    Quellcode

    1. Sub Test()
    2. Dim strMarks1 As String, strMarks2 As String, strSuch As String, class As String
    3. strMarks1 = Sheets("Marks").Cells(2, 3).Value
    4. strMarks2 = Sheets("Marks").Cells(2, 4).Value
    5. strSuch = strMarks1 & " " & strMarks2
    6. 'Alternativ geht auch
    7. 'strSuch = Sheets("Marks").Cells(2, 3).Value & " " & Sheets("Marks").Cells(2, 4).Value
    8. ' check the marks using if and ElseIf
    9. If strSuch = "Sonnen König" Then
    10. class = "Frankreich"
    11. ElseIf strSuch = "Frosch König" Then
    12. class = "Taucher"
    13. Else
    14. ' All other marks
    15. class = "Fail"
    16. End If
    17. Sheets("Marks").Cells(2, 5).Value = class
    18. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „interface“ ()

    Boah jetzt habe ich es dank euch !!!

    Quellcode

    1. Sub Test()
    2. Dim strMarks1 As String, strMarks2 As String, strMarks3 As String, strSuch As String, class As String
    3. strMarks1 = Sheets("Marks").Cells(2, 2).Value
    4. strMarks2 = Sheets("Marks").Cells(2, 3).Value
    5. strMarks3 = Sheets("Marks").Cells(2, 4).Value
    6. strSuch = strMarks1 & " " & strMarks2 & " " & strMarks3
    7. 'Alternativ geht auch
    8. 'strSuch = Sheets("Marks").Cells(2, 3).Value & " " & Sheets("Marks").Cells(2, 4).Value
    9. ' check the marks using if and ElseIf
    10. If strSuch = "Snyder Sonnen König" Then
    11. class = "Frankreich"
    12. ElseIf strSuch = "Snyder Frosch König" Then
    13. class = "Taucher"
    14. Else
    15. ' All other marks
    16. class = "Fail"
    17. End If
    18. Sheets("Marks").Cells(2, 5).Value = class
    19. End Sub

    interface schrieb:

    Wenn ich deinen Code probiere erhalte ich aber einen Syntax Fehler in der 1. Zeile.

    Da fehlt eine schließende Klammer.
    Sieh es als C&P-Bremse ;)

    Ein wenig holprig ist dein neuer Ansatz schon.
    Er reagiert nicht auf die Eingabe, sondern muss explizit auf gerufen werden.
    Du könntest ihn auch aus dem Change-Event aufrufen.
    Aber wenn es für dich OK ist, ist es das für mich auch.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --