Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
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

Wenn Dann Code

Wenn Dann Code
20.04.2016 18:42:42
Boba
Hallo zusammen,
ich habe eine Frage und finde darauf leider keine Antwort. Ich habe mich an einem VBA Code probiert, der folgendes erreichen soll:
Wenn Zelle C1 = x, dann soll Zelle I1 = E1 sein und Zelle J1 = F1 sein. Ansonsten sollen die _ Zellen I1 und J1 leer bleiben.

Private Sub Worksheet_Change(ByVal Target As Range)
With Tabelle5
If .Range("C1").Value = "x" Then
.Range("I1").FormulaLocal = "=E1"
.Range("J1").FormulaLocal = "=F1"
Else
.Range("I1").FormulaLocal = """"
.Range("J1").FormulaLocal = """"
End If
End With
End Sub

Wo ist der Fehler?
Darüber hinaus soll diese gleiche Regel auch für den Bereich (C2:C4) gelten. Ist es möglich, einen Code zu bauen, der das abdeckt?
Vielen Dank!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Dann Code
20.04.2016 19:03:30
Werner
Hallo,
mit deinem Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("C1").Value = "x" Then
Range("I1").FormulaLocal = "=E1"
Range("J1").FormulaLocal = "=F1"
Else
Range("I1").FormulaLocal = """"""
Range("J1").FormulaLocal = """"""
End If
End Sub
Da das ein Event-Makro eines Tabellenblattes ist brauchst du das With und End With nicht, es wirkt sich immer in dem Blatt aus, in dem der Code steht.
Bei VBA eingetragenen Formeln die Gänsefüsschen immer doppelt.
Den Else Zweig könntest du aber auch so schreiben.
Else
Range("I1") = ""
Range("J1") = ""
End If
Für die Zellen C2 bis C4: Wo sollen die Formeln dann hin? Bei C2 dann in I2 und J2?
Gruß Werner

Anzeige
AW: Wenn Dann Code
21.04.2016 12:06:55
Boba
Super, das klappt und ich habs verstanden!
Besten Dank!

AW: Gerne u. Danke für die Rückmeldung. o.w.T
21.04.2016 12:46:57
Werner

AW: Wenn Dann Code
20.04.2016 19:18:58
Nepumuk
Hallo,
so ok?
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim objRange As Range, objCell As Range
    Set objRange = Intersect(Target, Range("C1:C4"))
    If Not objRange Is Nothing Then
        Application.EnableEvents = False
        For Each objCell In objRange
            If objCell.Value = "x" Then
                objCell.Offset(0, 6).Resize(1, 2).FormulaR1C1 = "=RC[-4]"
            Else
                objCell.Offset(0, 6).Resize(1, 2).ClearContents
            End If
        Next
        Set objRange = Nothing
        Application.EnableEvents = True
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: Wenn Dann Code
21.04.2016 12:06:18
Boba
Hallo Nepumuk,
großartig, vielen lieben Dank. Daraus ergeben sich nun leider Folgefragen:
Was bedeuten folgende Ausdrücke bzw. welche Befehle werden damit initiiert:
1) Intersect(Target, Range("C1:C4"))?
2) Was sagt diese Syntax-Baustein aus: objCell.Offset(0, 6).Resize(1, 2).FormulaR1C1 = "=RC[-4]"?
3) Wieso brauch ich am Ende der Syntax folgendes: Set objRange = Nothing & Application.EnableEvents = True?
Tausend Dank, du bist mir eine große Hilfe!

AW: Wenn Dann Code
21.04.2016 12:23:34
Nepumuk
Hallo,
1. Intersect bildet die Schnittmenge zwischen den geänderten Zellen und dem Bereich C1:C4
2. Ausgehend von der geänderten Zelle in Spalte C um 6 Spalten nach rechts versetzt auf 2 Spalten vergrößert schreibe die Formel R = selbe Zeile C[-4] = um 4 Spalten nach links versetzt.
3. a) Gib das Objekt objRange wieder frei. b) Schalte die automatischen Events wieder ein.
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige