Capslock bei Zellenaktivierung



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Capslock bei Zellenaktivierung
von: Jörg Kattwinkel
Geschrieben am: 17.05.2002 - 12:12:52

Hi All,

Problem:
wie kann ich bei Aktivierung einer Zelle die Capslocktaste einschalten und bei Deaktivierung wieder ausschalten?

Meine Theorie war: im worksheet selektion change event, Application.sendkey ("{CAPSLOCK}")

Funktioniert aber leider nur solange wie die Funktion durchlaufen wird und scheint mir auch recht träge zu sein.

Hat jemand vielleicht eine andere bessere Idee.

Danke, Jörg

nach oben   nach unten

Re: Capslock bei Zellenaktivierung
von: Andreas
Geschrieben am: 17.05.2002 - 12:47:46

Hallo Jörg,

Du willst also, das alle Buchstaben gross geschrieben werden?
Das würde ich dann anders lösen:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target.Value = UCase(Target.Value)
Application.EnableEvents = True
End Sub

Anders wirds eher schwierig. Das Problem dabei ist zu erkennen, wann die Zelle aktiviert (also bearbeitet wird). Das einzige Ereignis was mir da einfällt, wäre:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Aber wenn jemand mit F2 reingeht oder noch anders, dann passiert nichts!

Statt SendKeys könnte Dir das auch helfen:
https://www.herber.de/mailing/144901h.htm

Viel Spaß,
Andreas

nach oben   nach unten

Re: Capslock bei Zellenaktivierung
von: Jörg Kattwinkel
Geschrieben am: 17.05.2002 - 14:32:52

Hi Andreas,

Deine Lösung:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target.Value = UCase(Target.Value)
Application.EnableEvents = True
End Sub

... dies ist genau meine derzeitige Lösung, der Nachteil ist, dass die Umschaltung von Klein- auf Grossschreibung optisch recht träge ist. Aus diesem Grund wäre es günstig bei der Selektion bestimmter Zellen die Grossschreinbung automatisch zu aktivieren.

Danke für Deine Hilfe, Jörg

nach oben   nach unten

Re: Capslock bei Zellenaktivierung
von: Andreas
Geschrieben am: 17.05.2002 - 15:00:04

Hallo Jörg,

habe das jetzt mal umgestrickt:

Option Explicit
Private Type KeyboardBytes
   kbByte(0 To 255) As Byte
End Type

Dim kbArray As KeyboardBytes

Private Declare Function GetKeyState Lib "user32" _
     (ByVal nVirtKey As Long) As Integer

Private Declare Function SetKeyboardState Lib "user32" _
     (kbArray As KeyboardBytes) As Long

Private Function SetKey(intCapLockKey As Integer)
Const VK_NUMLOCK = &H90
Const VK_CAPITAL = &H14
Const VK_SCROLL = &H91

With kbArray
    .kbByte(VK_NUMLOCK) = GetKeyState(VK_NUMLOCK)
    .kbByte(VK_CAPITAL) = intCapLockKey
    .kbByte(VK_SCROLL) = GetKeyState(VK_SCROLL)
End With
SetKeyboardState kbArray
End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As Variant
Select Case Target.Address(False, False)
    Case "A1", "B2", "C4": var = SetKey(1)
    Case Else: var = SetKey(0)
End Select
End Sub

Sämtlichen Code zu dem Tabellenblatt einfügen.
In diesem Fall wird in den Zellen A1,B2 und C4 alles gross geschrieben!
Viel Spaß,
Andreas

nach oben   nach unten

Re: Capslock bei Zellenaktivierung
von: Jörg Kattwinkel
Geschrieben am: 17.05.2002 - 16:59:01

Hallo Andreas,

WOW, sieht nach einem ersten Test sehr vielversprechend aus. Ich werden den Code heute Abend mal implementieren.

Vielen Dank für Deine Hilfe.

Gruß Jörg


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Capslock bei Zellenaktivierung"