Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Änderung von Feldwert in Tabelle1 = VBA-Code wird ausgeführt
#1
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 :)
Antworten Top
#2
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
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
[-] Folgende(r) 1 Nutzer sagt Danke an chris-ka für diesen Beitrag:
  • o0Julia0o
Antworten Top
#3
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!
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • o0Julia0o
Antworten Top
#4
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?
Antworten Top
#5
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.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • o0Julia0o
Antworten Top
#6
ah, verstehe - danke! Ich hatte das gar nicht erst in Zusammenhang gebracht - nur gesehen, 2 Codes die das gleiche machen - aber total anders aussehen...
Antworten Top
#7
Hallo Julia,

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

Das sind zwei verschieden Codes die andere Dinge voraussetzen.
Gruß Atilla
Antworten Top
#8
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.
[-] Folgende(r) 1 Nutzer sagt Danke an o0Julia0o für diesen Beitrag:
  • Windlaeufer
Antworten Top
#9
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.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • o0Julia0o
Antworten Top
#10
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 :)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste