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

Ohne VBA: Übernahme von Werten ohne WENN-Funktion

Ohne VBA: Übernahme von Werten ohne WENN-Funktion
18.08.2015 17:53:42
Werten
Hallo liebe Community,
es geht um zwei Tabellenblätter (namens A und B). In diesen geht es jeweils um neun Zellen (jeweils A1:C3).
Jedesmal, wenn in A eine Zelle mit x befüllt wird, soll die jeweilige Zelle in B auch mit x befüllt werden (Bsp.: In A wird in Zelle A2 x eingetragen; dann soll auch in B in Zelle A2 x automatisch drin stehen).
Eine simple WENN-Lösung (=wenn(A!A1="x";"x";"") kommt leider nicht in Frage, da auch die neun Zellen in B manuell befüllt werden können, womit ja die Formeln der Zellen A1:C3 in B überschrieben werden würden.
Nun meine Fragen:
1) Gibt es für den Sachverhalt irgendeine Lösung ohne VBA?
2) Wie löst man das mit VBA? (VBA-Kenntnisse: 3/10)
Vielen Dank im Voraus!

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

Betreff
Datum
Anwender
Anzeige
AW: Ohne VBA: Übernahme von Werten ohne WENN-Funktion
18.08.2015 18:13:51
Werten
HAllo,
1) Gibt es für den Sachverhalt irgendeine Lösung ohne VBA?
Nein.
2) Wie löst man das mit VBA? (VBA-Kenntnisse: 3/10)
Dies ist ein Ansatz.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim Zelle As Range
    Application.EnableEvents = False
    Select Case Sh.Name 'es geht um zwei Tabellenblätter (namens A und B)
        Case Is = "A"
            For Each Zelle In Intersect(Target, Sh.Range("A1:C3")) 'In diesen geht es jeweils um neun Zellen (jeweils A1:C3).
                With Sheets("B").Range(Zelle.Address)
                    If Zelle.Value = "X" Then 'wenn in A eine Zelle mit x befüllt wird,
                        .Value = "X" 'soll die jeweilige Zelle in B auch mit x befüllt werden
                        Else:
                        .Value = ""
                    End If
                End With
            Next
        Case Is = "B"
            For Each Zelle In Intersect(Target, Sh.Range("A1:C3")) 'In diesen geht es jeweils um neun Zellen (jeweils A1:C3).
                With Sheets("A").Range(Zelle.Address)
                    If Zelle.Value = "X" Then
                        .Value = "X"
                        Else:
                        .Value = ""
                    End If
                End With
            Next
    End Select
    Application.EnableEvents = True
End Sub


Der Code muss unter DieseArbeitsmappe.
ransi

Anzeige
AW: Ohne VBA: Übernahme von Werten ohne WENN-Funktion
18.08.2015 18:16:01
Werten
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim Zelle As Range
    Application.EnableEvents = False
    On Error Resume Next
    Select Case Sh.Name 'es geht um zwei Tabellenblätter (namens A und B)
        Case Is = "A"
            For Each Zelle In Intersect(Target, Sh.Range("A1:C3")) 'In diesen geht es jeweils um neun Zellen (jeweils A1:C3).
                With Sheets("B").Range(Zelle.Address)
                    If Zelle.Value = "X" Then 'wenn in A eine Zelle mit x befüllt wird,
                        .Value = "X" 'soll die jeweilige Zelle in B auch mit x befüllt werden
                        Else:
                        .Value = ""
                    End If
                End With
            Next
        Case Is = "B"
            For Each Zelle In Intersect(Target, Sh.Range("A1:C3")) 'In diesen geht es jeweils um neun Zellen (jeweils A1:C3).
                With Sheets("A").Range(Zelle.Address)
                    If Zelle.Value = "X" Then
                        .Value = "X"
                        Else:
                        .Value = ""
                    End If
                End With
            Next
    End Select
    Application.EnableEvents = True
End Sub


Anzeige
AW: Ohne VBA: Übernahme von Werten ohne WENN-Funktion
18.08.2015 19:39:35
Werten
Vielen Dank!:)

Kann man aber auch lösen, ...
18.08.2015 23:40:30
Luc:-?
…derbo,
indem man ZellFmln mit VBA-Unterstützung durch UDF und Subprozedur nebst VerbundZelle verwendet → quasi eine selbst­korrigierende Eingabe­Zelle analog diesem hier konstruiert.
Wirkung: Solange die EingabeZelle, d.h. die allein sichtbare 1.Zelle im Verbund leer ist, wird die von dir erwähnte WENN-Fml "x" ergeben und die UDF wird diesen Wert mittels der aufgerufenen SubProz in die 1.Zelle transportieren. Ist sie gefüllt, egal wodurch, passiert nichts mehr.
Sicher musst du, falls du das anwenden willst, es noch etwas modifizieren.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW
19.08.2015 09:15:32
derbo123
Zusatzfrage:
Wie verformelt man es in VBA, wenn "x" nicht manuell in A eingetragen wird, sondern sich über eine Formel berechnet? Irgendwie greift die VBA-Formel bisher nämlich nur, wenn explizit x drinsteht. Bei Formeln mit x als Ergebnis funktioniert es nicht.

Das ist schnurz, ...
19.08.2015 16:19:10
Luc:-?
…derbo,
Ransis VBA-PgmCode (nicht VBA-Fml!) verwendet die Zell-Eigenschaft .Value, die auch das Ergebnis einer Fml darstellt.
Gruß, Luc :-?
Besser informiert mit …

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige