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

In einem Makro testen ob die Strg-Taste gedrückt

In einem Makro testen ob die Strg-Taste gedrückt
24.01.2014 11:55:10
Hugo
Hallo
ich möchte in einem Makro abfragen ob die Strg-oder Umschalttaste gedrückt ist oder nicht. Geht sowas überhaupt?
Vielen Dank schon mal... :-)

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In einem Makro testen ob die Strg-Taste gedrückt
24.01.2014 12:15:09
Rudi
Hallo,
in welchem Zusammenhang?
Gruß
Rudi

AW: In einem Makro testen ob die Strg-Taste gedrückt
24.01.2014 12:35:41
Hugo
Hallo Rudi,
nun ja. Ich füge mit einer selbst erstellten Symbolleiste Sonderzeichen in eine Zelle ein.
Ähnlich wie bei der Groß- und Kleinschreibung soll das Zeichen mal als Großformat mal als Kleinformat eingetragen werden.
z.B. Eine Schaltfläche fügt ein Durchmesserzeichen ein.
Beim Anklicken soll das Kleine "ø" eingefügt werden - bei gedrückter Taste das Große "Ø"
Gruß Hugo

AW: In einem Makro testen ob die Strg-Taste gedrückt
24.01.2014 12:53:36
Rudi
Hallo,
als Beispiel.
in ein allg. Modul:
 Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Const VK_SHIFT = &H10 'SHIFT key
Public Const VK_CTRL = &H11 'CTRL key

für den Cmd:
Private Sub CommandButton1_Click()
Select Case True
Case CBool(GetAsyncKeyState(VK_CTRL) And &H8000) And CBool(GetAsyncKeyState(VK_SHIFT) And & _
H8000)
MsgBox "SHIFT+STRG"
Case CBool(GetAsyncKeyState(VK_CTRL) And &H8000)
MsgBox "STRG"
Case CBool(GetAsyncKeyState(VK_SHIFT) And &H8000)
MsgBox "SHIFT"
Case Else
MsgBox "keine Taste"
End Select
End Sub

Gruß
Rudi

Anzeige
AW: In einem Makro testen ob die Strg-Taste gedrückt
24.01.2014 13:11:15
Hugo
Hallo Rudi,
ich komme so nicht klar. Mein Makro schaut so aus und ist in einem Modul.
Zunächst wir die Zelle ausgelesen. Anschließend das Ausgelesene und das Durchmesserzeichen eingefügt.
Und wie gesagt, das alles mit einer Schaltfläche in einer benutzerdefinierten Symbolleiste.
Sub Durchmesser()
Set tmp = ActiveCell
tmp = tmp & ChrW(193)
ActiveCell.FormulaR1C1 = tmp
End Sub
Wenn ich dein "Public Declare... " hier einfüge bringt mir Excel 'ne Fehlermeldung.
Gruß Hugo

Das 'Declare' gehört ja auch an den Anfang ...
24.01.2014 13:34:15
Luc:-?
…des Moduls, nicht in irgendeine Subprozedur, Hugo;
das hatte Rudi ja auch so geschrieben!
Übrigens, Øø sind keine Durchmesserzeichen, das gibt's extra und nur in 1 Variante, sondern dänisch-norwegische Buchstaben, die unserem Öö entsprechen.
Gruß Luc :-?

Anzeige
AW: In einem Makro testen ob die Strg-Taste gedrückt
24.01.2014 13:47:57
Hugo
Es funzt!! :-)
Danke für den Hinweis Luc:-?
Und danke für den Code, Rudi!!
Fantastisch... :-)

AW: In einem Makro testen ob die Strg-Taste gedrückt
24.01.2014 13:50:33
Rudi
Hallo,
mein Testaufbau:
Option Explicit
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Const VK_SHIFT = &H10 'SHIFT key
Public Const VK_CTRL = &H11 'CTRL key
Sub Menu()
Dim cBar As CommandBar, cBtn As CommandBarButton, oPop As CommandBarPopup
On Error Resume Next
Application.CommandBars("Test").Delete
On Error GoTo 0
Set cBar = CommandBars.Add("Test", , , True)
Set oPop = cBar.Controls.Add(msoControlPopup)
oPop.Caption = "Test"
Set cBtn = oPop.Controls.Add(msoControlButton)
With cBtn
.Caption = "Ø"
.OnAction = "Durchmesser"
End With
cBar.Visible = True
End Sub
Sub Durchmesser()
Dim strTmp As String
strTmp = ActiveCell
If CBool(GetAsyncKeyState(VK_SHIFT) And &H8000) Then
strTmp = strTmp & UCase(Chr(216))
Else
strTmp = strTmp & LCase(ChrW(216))
End If
ActiveCell = strTmp
End Sub

Gruß
Rudi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige