Anzeige
Archiv - Navigation
1144to1148
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
Word-Vba mit F11 von Checkbox zu Checkbox
Checkbox
Hallo Wissende,
https://www.herber.de/bbs/user/68526.doc
ist an sich unnötig, da ist nur Beipieltext und drei Checkboxen (aus Steuerelementtoolbox) drin.
Mit F11 will ich, so wie wenn das Dokument geschützt ist mit TAB, von Checkbox zu Checkbox hüpfen, sodaß ich mit der Leertaste das Häkchen setzen/entfernen kann.
Dies klappt auch schon, allerdings muß ich F11 immer zweimal drücken.
Beim zweiten Mal wird das Ereignis "Keydown" gar nicht ausgeführt.
Drücke ich einmalig F11, danach dann manuell beliebig die Tabtaste, eine Pfeiltaste o.ä., dann klappt F11.
Scheinbar ist Word nach dem ersten F11 in einem anderen Modus, das zweite F11 hebt dann diesen Modus wieder auf.
Wie kann ich das in Vba umsetzen?
Nachstehend die Codes.
Danke ^ Gruß
Reinhard
in Modul1:
Sub CBtoCB()
Static intCB As Integer
intCB = IIf(intCB = ActiveDocument.InlineShapes.Count, 1, intCB + 1)
'SendKeys "{TAB}", True
ActiveDocument.InlineShapes(intCB).OLEFormat.Object.Select
'SendKeys "{TAB}", True
'DoEvents
'ActiveDocument.Activate
'Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub

in Thisdocument:
Private Sub CheckBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 122 Then Call CBtoCB
'DoEvents
End Sub
Private Sub CheckBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 122 Then Call CBtoCB
'DoEvents
End Sub
Private Sub CheckBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 122 Then Call CBtoCB
'DoEvents
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Word-Vba mit F11 von Checkbox zu Checkbox
12.03.2010 12:50:36
Checkbox
Hallo Reinhard,
beim 1. drücken von F11 läuft kein Makro ab, sondern Du nutzt die Standardfunktionalität von der Taste F11 aus - 'Springe zum nächsten Feld'. Deshalb hat die Variable 'intCB' immer noch den Wert 0, aber die 1. Checkbox wurde angewählt. Drückt man jetzt wieder F11 wird 'intCB' auf 1 gesetzt und die 1. Checkbox wird noch einmal angewählt (Fokus bleibt auf der 1. Checkbox). Erst beim 3. mal F11 wird 'intCB' richtig belegt.
'in einem normalen Modul
Public intCB As Integer
'im Klassenmodul ThisDocument
Private Sub Document_Open()
intCB = 1
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Word-Vba mit F11 von Checkbox zu Checkbox
12.03.2010 13:27:03
Checkbox
Hallo Luschi,
Klasse, das klappt :-)
Gruß
Reinhard
Zu früh gefreut :-((
12.03.2010 18:29:47
Reinhard
Hallo Luschi,
https://www.herber.de/bbs/user/68537.doc
dieses Word-problem macht mich echt kirre, man sieht den paar Codezeilen nicht an daß ich da schon locker 4 h investiert habe.
Wäre ja letzlich okay, wenns klappen würde, aber das macht der Code grad nicht :-(
In der Beispielmappe sind acht Checkboxen.
Mit F11 kann man gut von CB1 zu CB2, dann zu CB3 usw, hüpfen.
ABER, ab CB5 ist Schluß damit, dann muß man F11 zweimal drücken um weiterzukommen.
Waum das? Der Ereigniscode ist für alle CBs gleich. Was ist da der Unterschied zwischen CB5 und CB6? Ich komm nicht drauf *seufz*
Gruß
Reinhard
Anzeige
AW: Zu früh gefreut :-((
13.03.2010 23:05:20
Luschi
Hallo Reinhard
schau mal in den Vba-Code unter 'ThisDocument'. Da gibt es den Ereigniscode nur für die ersten 3 Checkboxen. Du mußt den Ereigniscode aber auf die vorhandenen 8 Checkboxen erweitern.
Gruß von Luschi
aus klein-Paris
AW: Zu früh gefreut :-((
14.03.2010 10:16:32
Reinhard
Hallo Luschi,
peinlich, da habe ich die falsche Testdatei hochgeladen.
Jetzt funktioniert aber alles nach Wunsch, fürs Archiv:
Option Explicit
Private Sub Document_Open()
intCB = 0
' Verweis auf Normal.dot zur Speicherung der Tastenbelegung
CustomizationContext = NormalTemplate
' Makro CBtoCB wird auf F11 gelegt
KeyBindings.Add KeyCategory:=wdKeyCategoryCommand, _
Command:="CBtoCB", KeyCode:=BuildKeyCode(wdKeyF11)
End Sub
Private Sub Document_Close()
' Verweis auf Normal.dot zur Speicherung der tastenbelegung
CustomizationContext = NormalTemplate
' F11 zurücksetzen
FindKey(BuildKeyCode(wdKeyF11)).Clear
End Sub
Private Sub CheckBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 122 Then Call CBtoCB
End Sub
Private Sub CheckBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 122 Then Call CBtoCB
End Sub
usw.

in einem Modul:
Option Explicit
Public intCB As Integer
Sub CBtoCB()
'MsgBox ActiveDocument.InlineShapes.Count
intCB = IIf(intCB = ActiveDocument.InlineShapes.Count, 1, intCB + 1)
ActiveDocument.InlineShapes(intCB).OLEFormat.Object.Select
End Sub

Danke und Gruß
Reinhard
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige