Clever-Excel-Forum

Normale Version: Änderung von Feldwert in Tabelle1 = VBA-Code wird ausgeführt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
hallo, kann ich es so einstellen, dass wenn sich in Tabelle! der Wert in Feld A1 ändert, dass dann ein VBA-Code ausgeführt wird?

lieben Dank

Julia :)
Hi,

ja

aber ich nehme an du willst wissen wie und nicht ob es geht...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Cells(1, 1)) Is Nothing Then
    'dein Makro oder weiterer Code
End If
End Sub

dieser Code liegt in der jeweiligen Tabelle
Auch Hallo,

da ich vom Mitlesen in deinen anderen Threads eine Ahnung habe, meinst Du es eher so

Code:
Private Sub Worksheet_Calculate()
   'dein Code
   MsgBox "Ja"
End Sub

der Code gehört in die Tabelle, in der die Formel steht!
thanks euch!
(21.02.2017, 11:07)chris-ka schrieb: [ -> ]aber ich nehme an du willst wissen wie und nicht ob es geht...
...wenn ich das für Excel so formuliert hätte, hätte ich nur ein "Yes" erhalten ^^

Was ist jetzt der Unterschied von beiden Codes?
Hallo Julia,

der Unterschied ist, dass Dir Beides doch schon ähnlich aber ausführlicher an andrer Stelle erklärt wurde.

Schau mal:  clever-excel-forum.de


Sind wir hier in einer Konsumgesellschaft, wo nur konsumiert wird?   :@ 

Warum lässt Du Dir Dinge erklären, wenn Du sie nicht (ge)brauchst  und Dir merkst.
ah, verstehe - danke! Ich hatte das gar nicht erst in Zusammenhang gebracht - nur gesehen, 2 Codes die das gleiche machen - aber total anders aussehen...
Hallo Julia,

für Excel ist das Aussehen völlig egal.

Das sind zwei verschieden Codes die andere Dinge voraussetzen.
jo, ich habe den Code mal recht professionell erweitert:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D1")) Is Nothing Or Range("D2") Or Range("L1") Then
MsgBox "Änderung bemerkt"
End If
End Sub
Das funktioniert auch. Jedoch wenn ich in eines der Felder ein Datenüberprüfungsfeld mache, nicht mehr. Also solche ein Auswahlmenüfeld, wenn ich auf D1 klicke dann auf Daten>Datenüberprüfung>Liste & oder eine Reihe an Feldern auswähle, welche dann per Auswahlmenü in das Feld geschrieben werden.

Sobald ich dann etwas auswähle, springt der Debugger an: "Typen unverträglich".

Ich könnte natürlich auch mich auf D1 beziehen(J1=D1) & dann "Private Sub Cell_Calculate()" machen auf das Worksheet. Jedoch würde der ja auch neu berechnen, wenn es unnötig ist. Also bei jeder neuberechnung irgendeines Feldes.
Hallo Julia,

hier ein Paar Worte von einem Laien:

Das der Code nach Deiner Meinung etwas macht oder nicht macht, hat nichts mit der Datengültigkeit zu tun.
Lösch die Gültigkeit und gb den Wert, den Du aus der Gültigkeit auswählen würdest manuell ein. Es wird das gleiche passieren.

Der Debugger springt an, weil Du wahrscheinlich in der Zelle D2 oder L1 eine Formel hast, die nach Auswahl aus der Gültigkeit einen Fehlwert ausgibt.

Nun sind wir wieder da, wo wir schon mal waren. Das was Du da schreibst oder machst macht man nicht.
Das ist so Ähnlich wie die Geschichte mit Deiner Formel 6=A1:A5. Das weißt Du ja jetzt, das man/Frau das nicht tut.
Und hier tut man den zweiten Teil mit

Code:
Or Range("D2") Or Range("L1")
nicht.

Ich übersetze die Ganze Zeile mal mit der If Abfrage:

Das hier:

Code:
If Not Intersect(Target, Range("D1")) Is Nothing Or Range("D2") Or Range("L1") Then

bedeutet ins Deutsch-Excel übersetzt:

Wenn nicht der Schnittbereich (von Zielzelle, und der Zelle (D1)) nichts ist oder Zelle (D2) oder Zelle (L1) dann

Du erkennst hoffentlich, dass Excel sich da irgend etwas zusammengereimt hat, als er den Code ausgeführt hat.

Wenn nicht der Schnittbereich (von Zielzelle, und der Zelle (D1)) nichts ist , liest sich komisch, aber das versteht Excel richtig. Da gibt es kein Deuten.

Jetzt könntest Du vielleicht noch einmal in Worten, von mir aus so wie ich in Deutsch-Excel, erklären, was Du machen möchtest.
hallo
(21.02.2017, 20:09)atilla schrieb: [ -> ]Wenn nicht der Schnittbereich (von Zielzelle, und der Zelle (D1)) nichts ist oder Zelle (D2) oder Zelle (L1) dann
Und ich bin von ODER ausgegangen.

(21.02.2017, 20:09)atilla schrieb: [ -> ]Der Debugger springt an, weil Du wahrscheinlich in der Zelle D2 oder L1 eine Formel hast, die nach Auswahl aus der Gültigkeit einen Fehlwert ausgibt.

Naja, also solch ein Listenfeld:
[url=
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Dort ist eine Liste hinterlegt, und 1 Wert davon kann eingetragen oder per Dropxdownmenü ausgewählt werden. Jedoch, wenn ich nur ein Listenfeld angebe, funktioniert das:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("L1")) Is Nothing Then
MsgBox "Änderung bemerkt ByVal"
End If
End Sub


Ich möchte, sobald Jemand ein Dropdownmenü(Also solch ein Auswahlmenüfeld, wenn ich auf D1, D2, L1 klicke dann auf Daten>Datenüberprüfung>Liste & oder eine Reihe an Feldern auswähle, welche dann per Auswahlmenü in das Feld geschrieben werden - siehe Bild oben in diesem Beitrag) ändere, dass Code ausgeführt wird. In dem Fall eine MsgBox.

Ich habe eine neue Variante. Jedoch auch hier, sobald ich ein 2. Feld mit einbaue, funktioniert sie nicht mehr:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$D$1" Then
  MsgBox "Zelle ausgewählt"
  End If
  If Target.Adress = "$L$1" Then
  MsgBox "Andere Zelle ausgewählt"
  End If
End Sub

So funktioniert sie noch:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$D$1" Then
  MsgBox "Zelle ausgewählt"
  End If
End Sub

Irgendwann möchte ich auch einmal Laie werden...

Julia :)
Seiten: 1 2 3 4