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

Zelle verlassen, dann Abfrage ???

Zelle verlassen, dann Abfrage ?
25.10.2021 20:56:07
uwehinku
Hallo, es geht um VBA
Ich möchte, wenn ich die Cells(i,9) entweder verlasse, dass eine Abfrage gestartet wird und erst dann in die nächste Zelle geht, egal welche
Also immer, wenn die Spalte 9 verlasse.
geht so etwas ?
Wer kann mir da helfen?
Gruß
Uwe

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle verlassen, dann Abfrage ?
25.10.2021 21:02:34
{Boris}
Hi,
das lässt sich z.B. mit einer statischen Variable lösen.
In das Codemodul des entsprechenden Tabellenblattes:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static lngCol As Long
If lngCol = 9 Then
MsgBox "Freundchen....Du verlässt gerade Spalte I..."
End If
lngCol = Target(1, 1).Column
End Sub
VG, Boris
AW: Zelle verlassen, dann Abfrage ?
25.10.2021 21:35:16
uwehinku
Hallo Boris,
ich verstehe das nicht.
Ich komme von z.B "A7" ................ nun komme ich in die Zelle G7 oder I7
nun soll das passieren.
Das Programm ist ja eigentlich bereits durch gelaufen und steht.
Deshalb hatte ich gedacht, dass macht man mit H7 oder I7 Klick()
so würde die Klick Prozedur ausgelöst
ich weiß aber nicht, ob das geht, kann man eine Zelle mit Klick oder einfaches hineingehen eine Procedur auslösen.
Tut mir leid, dass ich das so nicht erklärt habe
Gruß
Uwe
Anzeige
Ich habe nur...
25.10.2021 21:45:32
{Boris}
Hi,
..auf Deine Frage geantwortet:

Ich möchte, wenn ich die Cells(i,9) entweder verlasse, dass eine Abfrage gestartet wird und erst dann in die nächste Zelle geht, egal welche
Also immer, wenn die Spalte 9 verlasse.
Genau das macht der Code - er reagiert, sobald die Spalte I (9) selektiert war und nun eine Zelle in einer anderen Spalte selektiert wird.
Wenn Du was anderes möchtest, beschreibe es bitte genauer.
VG, Boris
AW: Ich habe nur...
25.10.2021 21:55:04
uwehinku
Hallo Boris,
es tut mir leid.
ich habe erst auf Grund Deine Antwort gemerkt, da habe ich etwas nicht genau erklärt.
Boris: "Genau das macht der Code - er reagiert, sobald die Spalte I (9) selektiert war und nun eine Zelle in einer anderen Spalte selektiert wird."
ich werde das noch einmal probieren und melde mich dann noch mal
sobald die Spalte I (9) selektiert war, verstehe ich so, sowie ich daraus gehe,
Frage wie?
Pfeiltaste nach rechts, Enter oder Maus
Fragen über Fragen für mich
Gruß
Uwe
Anzeige
Völlig egal...
25.10.2021 21:59:20
{Boris}
Hi,
...wie Du die Spalte verlässt - sobald eine Zelle außerhalb dieser Spalte (I = 9) selektiert wird, greift der Code.
Aber warum muss ich Dir jetzt Deine Frage erklären?

Also immer, wenn die Spalte 9 verlasse.
Das ist für mich eindeutig.
VG, Boris
AW: Völlig egal...
25.10.2021 22:26:58
uwehinku
Sorry, es funzt nicht
Gruß
Uwe
Funzt nicht...
26.10.2021 09:41:21
{Boris}
Hi,
...ist wirklich die suboptimal(st)e Antwort, die man geben kann, ohne dabei zu sagen, was genau "nicht funzt".
Lad doch mal bitte Deine Mappe mit dem nicht funktionierenden Versuch hoch.
VG, Boris
AW: Ich habe nur...
25.10.2021 22:28:11
Yal
Hallo Uwe,
Gern erklären wir für dich ein bisschen ausführlicher.
Dass es sich um eine Ereignis-Prozedure handelt, hast du bereit entdeckt: es löst sich auf, wenn die Markierung (Selection) von eine Zelle zu einer anderen wechselt: SelectionChange.
Da aber das übergebenen Argument ("Target") die Zelle darstellt, wo man hinkommt, und nicht die, die man gerade verlässt, benutzt man einen Trick: am Ende der Prozedure übergibt man den "Target" an einer Variable "Static". Der Inhalt solcher Variablen bleibt stehen, auch wenn man die Prozedure verlässt. So wird beim nächsten Aufruf der Inhalt der Variable die Zelle, die man gerade verlassen hat.
Dann prüft man nur noch, dass diese Zelle in Spalte 9 steht, wenn ja, Meldung.
VG
Yal
Anzeige
Eine Ereignisprozedur muss...
25.10.2021 22:30:53
Yal
...in der Codepane eines Worksheets abgelegt werden. Und gilt nur für diese eine Worksheet.
VG
Yal
AW: Ich habe nur...
25.10.2021 22:38:27
uwehinku
Hallo Yal,
erst einmal recht recht herzlichen Dank für die Info.
Leider habe ich das Problem, wo muss ich diesen neuen Code einfügen?
wenn ich über F8 in schritten versuche es zu verstehen, sehe ich klar,

Sub ................
End Sub
Dort läuft er sich tot
Wie komme ich denn von einer

Sub Prozedur mit end 

Sub in die nächste Prozedur ?
Sorry, könntest Du mir ein Buch nennen, wo das nachlesen kann.
Nochmals Danke Dir.
Gruß
Uwe

Anzeige
Du hast nur nicht richtig gelesen...
26.10.2021 00:44:15
Matthias
Hallo, das hat Boris Dir bereits in der ersten Antwort aufgezeigt!
In das Codemodul des entsprechenden Tabellenblattes:
Gruß ...
Ereignisprozedur
26.10.2021 07:33:01
Yal
Moin Uwe,
Ereignisprozedure starten "von allein", bzw. wenn das passende Ereignis auftritt.
Wenn Du in dieser Prozedur die Anweisung gibt: gehe auf nächste Zelle rechts, dann ist es ein Ereignis "SelectionChange": die Prozedur wird nochmal gerufen. Es sieht dann so aus, als diese endlos laufen würde.
Der "Blocker" ist in Form eines:
Application.EnableEvents = False
am Anfang des Subs und am Ende:
Application.EnableEvents = True
einzufügen.
Zum Thema Buch:
Excel programmieren von Michael Koffler, inzwischen in Version 2016, war in frühere Auflage ein Referenzwerk. Vor allem anfängertauglich. Ich kann mich nicht vorstellen, dass es inzwischen schlecht geworden wäre.
VG
Yal
Anzeige
AW: Ereignisprozedur
26.10.2021 09:34:45
uwehinku
Hallo Yal,
recht recht herzlichen Dank.
Auf Dich ist Verlass und Du erklärst es wenigsten.
ich probiere es noch einmal
Danke Dir
Gruß
Uwe
AW: Ereignisprozedur
26.10.2021 10:10:18
uwehinku
Hallo Yal,
es funktionier nicht.
ich lade einmal mein Programm hoch
Die Datei p-2848 - bestellformular.xlsm wurde erfolgreich zum Server hochgeladen und in 148796.xlsm umbenannt.
Gruß
Uwe
Falsches Codemodul
26.10.2021 11:06:14
{Boris}
Hi,
Du hast den von mir geposteten Code in das Codemodul "DieseArbeitsmappe" kopiert. Er gehört aber - so wie ich es auch geschrieben habe - in das Codemodul des entsprechenden Arbeitsblatts. Also Doppelklick im VBA-Editor links auf Tabelle1 (ControllingBestellformular) und dann in das rechte Fenster den Code kopieren.
VG, Boris
Anzeige
AW: Ereignisprozedur
26.10.2021 11:58:35
Yal
Hallo Uwe,
danke, danke. Ich weiß, dass es bei Dir nicht nur um die Lösung sondern auch um das Verstehen.
Besonders beim Start ist es wichtig, zu verstehen warum. So kann man schneller selbständig entdecken und lernen.
Das Thema der Ereignisprozedure und wo sie stehen sollen, ist eigentlich einfach:
Du hast im Baum der Projekt Explorer links
_ das "VBA Projekt(Mappe1)" : ein Oberknoten für die aktuelle Datei, genauso wie den "Microsoft Excel Objekte".
_ darunter "DieseArbeitsmappe": hier werden die Ereignisprozeduren abgelegt, die auf Datei-Ebene reagieren sollen: Workbook_BeforePrint, Workbook_BeforeClose, usw. Siehe über das Code-Fenster, den Auswahl wo "Allgemein" steht, wechsle auf Workbook und schon kommt den ersten Ereignisvorschlag "Workbook_Open". Schaue oben rechts davon, da wo "Open" steht, für die Liste der anderen Ereignisse.
_ pro Arbeitsblatt ein "Tabellex": hier werden die Ereignisprozeduren abgelegt, die nur in diese Arbeitsblatt reagieren sollen: Worksheet_Change, Worksheet_Activate, usw.
Dann gibt es die Modulen. Diese werden erzeugt, wenn man den Makro-Rekorder verwendet, oder mit "Einfügen", "Module". Hier werden alle prozeduren (Function oder Sub) sie nicht für ein Element spezifisch sind. Darin muss immer genau erklärt werden, wenn eine Zelle, dann auf welchem Blatt, weil Modul nicht für einen bestimmte Blatt da steht. Ereignisse haben dort nicht zu suchen.
Dann gibt es die Formulare und Klassenmodule. Dafpür fragst Du einfach, wenn Du soweit bist ;-)
Also wo soll deine Erregnisprozedure "Worksheet_SelectionChange" stehen?
In dem Code-Fenster für das entsprechende Blatt.
VG
Yal
Anzeige
AW: Ereignisprozedur
26.10.2021 14:30:25
uwehinku
Hallo Yal,
dank Deiner Erklärung bin ich nun Klarer, ich hatte mich immer gefragt, wozu dieser Baum da ist.
Danke nochmals und übrigens, nun geht das.
Es funktioniert wirklich.
Danke, danke
Gruß
Uwe

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige