382 Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Experte (2.7k Punkte)
Hallo und guten Tag,

Suche Hilfe bei euch, da ich nicht weiterkomme.

Wie kann ich bei einfachem Klick (also kein Doppel Klick) erreichen das ich in  irgend eine Zelle mehrmals hinter einander anklicken kann, die Zellen die ich meine sind A5 bis F15. Die Zellen sind mit Zahlen hinterlegt Von 1 bis 60. Beispiel: Ich Klicke auf Zelle F14 hier steht die Zahl 60 die wird in die Bezugszelle eingefügt. Jetzt, das was ich nicht schaffe, ist dass, das ich auf die Zelle klicken kann aber es passiert nichts, erst wenn ich auf eine andere Zelle klicke mit einer anderen Zahl. Ich möchte erreichen, dass wenn ich auf die gleiche Zelle klicke, dieser Klick auch anerkannt wird und ich nicht erst auf einen andere Zelle Klicke, denn so zählt er ja nicht den Wert den ich benötige. Gibt es dafür eine Lösung.

Mein VBA beginnt mit der Überschrift: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Und das ist der Befehl:  'Nur bei Klick im Bereich von A4 bis F14 ausführen

If Intersect(Target, Range("A4:F15")) Is Nothing Then Exit Sub             

Sollte der gesamte Code benötigt werden? Bitte ich euch dies mir mitzuteilen dann lade ich dies gerne hoch.

Gruß Adde

15 Antworten

0 Punkte
Beantwortet von xlking Experte (1.7k Punkte)
Hallo Adde,

das geht in Excel nicht. Es gibt im normalen Excel-Leerlauf-Prozess kein Ereignis, das auf einen einfachen LinksKlick reagiert. Selection_Change ist hier bereits das Beste was du schon hast. Dazu ist aber nun mal ein Wechsel der Aktiven Zelle notwendig, damit das anspringt. Alternativen dazu sind der Doppelklick oder der Rechtsklick. Beides hast du glaub ich bereits im Einsatz.

Sollte jedoch im Hintergrund ein Makro in einer Dauerschleife mitlaufen, das zuvor irgendwie gestartet werden muss, könntest du auf den Linksklick mit der API GetAsyncKeyState reagieren. Das kann allerdings dein Tool entsprechend langsamer machen oder zu ungewollten Ergebnissen führen.

Muss es denn unbedingt ein Klick sein. Du könntest statt der Maustaste auch auf einen Tastendruck der Tastatur reagieren. Da gibt es viele Möglichkeiten mit Application.OnKey einen Code auszulösen. z.B. wenn du stattdessen auf Enter oder auf die Leertaste drückst. Das würde im Excel-Leerlaufprozess gut funktionieren.

Gruß Mr. K.
0 Punkte
Beantwortet von addeguddi Experte (2.7k Punkte)
Bearbeitet von addeguddi
Hallo und guten Morgen Mr. K.

vielen Dank für deine Antwort habe gestern den ganzen alles mögliche probiert und habe eine Lösung gefunden. Habe meinen Code erweitert. Das war vorher:

'Nur bei Klick im Bereich von A4 bis F14 ausführen
If Intersect(Target, Range("A4:F15")) Is Nothing Then Exit Sub

Das ist er jetzt und das funktioniert.

'Nur bei Klick im Bereich von A4 bis F14 ausführen
If Intersect(Target, Range("A4:F15")) Is Nothing Then Exit Sub
 ' Überprüfen, ob die ausgewählte Zelle im Bereich A5:F15 liegt
    If Not Intersect(Target, Me.Range("A5:F15")) Is Nothing Then
        ' Springe zu Zelle LA10
        Application.Goto Reference:=Me.Range("LA10")
    End If

Gruß Adde

Ps. Wollte nur noch erwähnen, Das der letzte Teil das bewirkt, als würde man ein Doppel Klick tätigen und dies ermöglicht es das man immer in oder sooft man will in die gleiche Zellen klicken kann.

Gruß Adde
0 Punkte
Beantwortet von vbastler Mitglied (325 Punkte)

Moin ihr beiden,

kleiner Nachtrag @xlKing: "geht in XL nicht..." stimmt für normale Zellen, für ein Worksheet generell aber nicht ganz. 

Fügt man dort ein Shape ein, kann man dem auch beim Event Click eine oder mehrere Prozeduren zuordnen. Dann fällt auch die in einer Zelle notwendige Filterfunktion if target ... weg.

Mit einer durchdachten Namenskonvention für die Shapes, lassen sich daraus ganz lustige Klicklandschaften bauen.

Schönes Wochenende!

wünscht d'r Bastler von den VBAsteleien

0 Punkte
Beantwortet von xlking Experte (1.7k Punkte)
Hi Bastler,

wenn du wüsstest, was ich alles schon mit Shapes angestellt habe. Ein paar tolle Spielchen wird man demnächst auf meiner Webseite ausprobieren können. Das von dir beschriebene Procedere ist mir also durchaus bekannt. Man könnte hier eine auf die Zelle verknüpfte Grafik hinterlegen und dieser dann das Makro zuweisen. Dann ist es aber nicht mehr bei Klick auf Zelle sondern bei Klick auf Shape. Das ist schon ein Unterschied. Die Lösung von Adde, einfach nach jedem Klick per Makro aus der Zelle rauszuspringen um diese beim nächsten Klick wieder neu zu selektieren ist aber auch nicht schlecht. Insofern, viel Spaß beim Spielen Adde.

Gruß Mr. K.
0 Punkte
Beantwortet von vbastler Mitglied (325 Punkte)

"Wenn Du wüss..." Weiß ich natürlich nicht, freue mich aber sehr über Deine Rückmeldung. Machen wir ein neues Thema auf, oder magst mir zwei Fragen an Deine Expertise hier beantworten?

  1. Kann man einem Shape irgendwie eine ControlTipText zuweisen?
  2. Kann man bei einem Shape per VBA-Eigenschaft einen Angelpunkt für die Rotation zuweisen? Ich habe bisher nichts Besseres als oben/mitte gefunden.

Deine Anmerkung Unterschied, hatte ich ja schon berücksichtigt. Schön, wenn sich da neue Möglichkeiten der Gestaltung eröffnen und Danke für Deinen Hinweis!

Schöne Grüße

d'r Bastler von den VBAsteleien

0 Punkte
Beantwortet von xlking Experte (1.7k Punkte)
Bearbeitet von xlking

Hi Bastler,

Das Thema ControlTipText hatten wir leztes Jahr drüben im VBA-Forum. Kurz gesagt: Es kommt ganz auf das Shape an. Einem ActiveX-Steuerelement (z.B. Button) muss auf einem ActiveX-Frame platziert werden. Dann kannst du über die Schaltfläche Bearbeiten einen Controltiptext zuweisen. Wenn du willst zeige ich dir das in einem neuen Thread aber wie ich dich kenn kriegst du das auch selbst hin.

Bei einem Autoshape müsstest du über die SetTimer API einen Timer aufmachen, der überwacht ob sich der Mauszeiger auf einem Shape befindet. Persönlich bin ich aber gegen die SetTimer API, da die immer wieder zu Abstürzen führt, sobald man mal was falsch macht. Dazu gibts zwar auch Tricks das zu umgehen. Aber am Ende stürzt Excel trotzdem ab. Die Gründe weshalb und wieso kann ich dir auch nennen, würde hier aber den Rahmen sprengen. Aber wenn du es versuchen willst hat Volti vor einem Jahr drüben im VBA-Forum eine gute Möglichkeit gepostet. In dem selben Thread habe ich auch eine Variante gezeigt, wie man Buttons nachträglich in Controls umwandelt um den Controltiptext hinzuzufügen. Ich hoffe ich darf hier auf fremde Foren verlinken? Ich versuchs mal. Falls Fabian was dagegen hat kann er ja den Link einfach löschen.

https://www.vba-forum.de/View.aspx?ziel=80112-ToolTipText

Bezüglich Rotation ist mir (oben) bislang nicht bekannt, da weißt du mehr als ich. Die Top und Left Eigenschaft bleibt immer gleich.  Da davon ausgehend ja immer gezeichnet wird. Egal wie grad rotiert ist. Aber es wird m.W. immer um den Mittelpunkt des das Shape umgebenden Rahmens gedreht. Alles andere würde mich ehrlich gesagt auch verwirren. Das einzige was sich anpasst ist die TopLeftCell- bzw. BottomRightCell-Eigenschaft. Die gibt je nach Drehung eine andere Zelle aus. Bei Bestimmten Autoformen kannst du aber über die Adjustments noch viel machen.

Eins fällt mir grade noch ein. Du kannst ein zweites Shape etwas versetzt zum ersten erstellen und beide gruppieren. Dann kannst du die Gruppe um den gemeinsamen Mittelpunkt drehen.

Für weitere Fragen und Antworten dazu schlage ich einen neuen Thread vor.

Gruß Mr. K.

0 Punkte
Beantwortet von addeguddi Experte (2.7k Punkte)
Vielen Dank

für eure Antwort und für die Hinweise. Hatte schon erwähnt, dass ich von den Begriffen die ihr nennt nicht weiß was sie bedeuten. Ich muss erst im Netz suchen was das bedeutet und dann versuche ich es in meiner Liste umzusetzen.

Gruß Adde
0 Punkte
Beantwortet von vbastler Mitglied (325 Punkte)

Moin Mr. K.

nach Deinen hilfreichen Kommentaren habe ich mich mal ein bisschen mit Shapes beschäftigt und hier eine Bauanleitung eingestellt.

Nachdem Dein Link oben nicht eliminiert wurde, traue ich mich das also auch und freue mich sehr, dass Fabian sein Forum -wie ich meines- nicht als Platzhirschwiese versteht, sondern Wissen vermitteln will. Danke Fabian!

Du - Mr. K.-  hattest Shape-Landschaften erwähnt. Dein Link ist im Thema auf VBAsteleien.de herzlich willkommen.

Liebe Grüße

d'r Bastler von den VBAsteleien

0 Punkte
Beantwortet von vbastler Mitglied (325 Punkte)

Moin Mr. K.

als ich eben mein Admin-Tool der VBAsteleien.de geöffnet habe, um die üblichen fünf bis zehn Spam-Russen pro Tag zu eliminieren, habe ich versehentlich auch Deine Anmeldung gekillt.

Darf ich Dich höflichst um Entschuldigung und einen zweiten Versuch bitten? Denn eigentlich hätte ich ein Herzlich Willkommen schreiben wollen.

Liebe Grüße

d'r Bastler von den VBAsteleien.de

0 Punkte
Beantwortet von xlking Experte (1.7k Punkte)

Eieiei, sowas darf aber nicht passieren. Erst einladen und dann nicht reinlassen. wink

Nettes kleines Forum hast du da, mal sehen ob ich da künftig auch etwas zu beitragen kann. Dem Supportnet bleib ich natürlich weiterhin treu.

Gruß Mr. K.

...