Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen

gedrückte Strg-Taste | Herbers Excel-Forum


Betrifft: gedrückte Strg-Taste von: Lorenz
Geschrieben am: 05.12.2009 17:48:57

Hallo!

Ich habe untenstehenden Code im "Worksheet_SelectionChange" stehen, wobei "And Shift = 1" für mit gedrückter Strg-Taste stehen sollte.
If Not Intersect(Range(Target.Address), RaBereich) Is Nothing And Shift = 1 Then Meine_UF.Show

Was muß statt "And Shift = 1" stehen, daß der Code dementsprechend funktioniert?

Danke Lorenz

  

Betrifft: AW: gedrückte Strg-Taste von: Josef Ehrensberger
Geschrieben am: 05.12.2009 17:56:32

Hallo Lorenz,

und woher kommt "Shift" bzw. woher bezieht es seinen Wert?


Gruß Sepp



  

Betrifft: AW: gedrückte Strg-Taste von: Lorenz
Geschrieben am: 05.12.2009 18:25:58

Hallo Sepp.

Habe die Codezeilen aus mouse-down-ereignis für ein image abgeschaut, weil es ja da funktionierte

Ich hatte übersehen, daß Shift as integer deklariert ist. "Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)"
If Shift = 1 Then.......

Wahrscheinlich lässt sich mein "Wunsch" nicht realisieren, da "Zellereignis<>Klick in UF"

Grüsse
Lorenz


  

Betrifft: AW: gedrückte Strg-Taste von: Josef Ehrensberger
Geschrieben am: 05.12.2009 18:45:39

Hallo Lorenz,

du kannst nicht einfach einen Parameter einer Ereignisprozedur in einer anderen einsetzen.

Das was du willst geht, aber Shift ist dazu eher ungeeignet, aber probier's mal.

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Declare Function GetAsyncKeyState Lib "user32" _
  (ByVal vKey As Long) As Integer

Private Const VK_SHIFT As Long = &H10


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim RaBereich As Range
  Set RaBereich = Range("A1:B5")
  If Not Intersect(Target, RaBereich) Is Nothing Then
    If GetAsyncKeyState(VK_SHIFT) <> 0 Then Meine_UF.Show
  End If
End Sub



Gruß Sepp



  

Betrifft: AW: gedrückte Strg-Taste von: Lorenz
Geschrieben am: 05.12.2009 19:27:00

Hallo Sepp!

Beim Probieren deines Codes stellte sich heraus, daß Shift ist genauso wie Strg in Excel ungeeignet ist, es löst natürlich f. div Markierungen & mehrfachmarkierungen dementsprechende funktion aus. Kannst du mir verraten wo man statt "&H10" zum Beispiel für Taste "y" den wert findet?

Danke Lorenz


  

Betrifft: AW: gedrückte Strg-Taste von: Josef Ehrensberger
Geschrieben am: 05.12.2009 19:40:42

Hallo Lorenz,

eine Buchstabentaste ist auch ungeeignet, damit schreibst du ja in die Zellen

F3 geht z.B. so.

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Declare Function GetAsyncKeyState Lib "user32" _
  (ByVal vKey As Long) As Integer

Private Const VK_F3 As Long = &H72


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim RaBereich As Range
  Set RaBereich = Range("A1:B5")
  If Not Intersect(Target, RaBereich) Is Nothing Then
    If GetAsyncKeyState(VK_F3) <> 0 Then Meine_UF.Show
  End If
End Sub


VK- Konstanten findest du im Netz.

Z.B.: Hier http://www.help-guide.de/win_virtual_key.htm


Gruß Sepp



  

Betrifft: AW: gedrückte Strg-Taste von: Lorenz
Geschrieben am: 05.12.2009 19:58:48

Hallo Sepp.

F3 ist auch schlecht löst "Namen einfügen" aus

Danke für Info über Link "VK- Konstanten"

Werde halt einige key´s ausprobieren.

Grüße
Lorenz


  

Betrifft: AW: gedrückte Strg-Taste von: Daniel
Geschrieben am: 05.12.2009 18:46:43

Hi
nein das wird so nicht funktionieren.
Excel zeigt, dir ja, welche Variablen du zu dem Ereignis abfragen kannst.

SELECTION_CHANGE stellt nur die Variable TARGET zur verfügung, dh du kannst nur feststellen, welcher Zellbereich markiert ist, mehr nicht!

was du prüfen könntest, wäre aber die Anzahl der markierten Zellen: mit TARGET.CELLS.COUNT
ist der Wert grösser als 1, dann hat der Anwender mehr als eine Zelle auf einmal markiert und hierfür auch die SHIFT- oder STRG-Taste gedrückt.

Gruß, Daniel


  

Betrifft: Sorry "Shift" nicht "Strg"-Taste von: Lorenz
Geschrieben am: 05.12.2009 18:41:23