Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Num-Lock wird deaktiviert

Num-Lock wird deaktiviert
04.02.2020 04:01:56
Thomas
Hallo
Ich habe folgenden Code im Forum gefunden.
Diesen habe ich etwas angepasst und funktioniert bis auf eine Kleinigkeit ganz gut.
Wenn ich das Makro starte, wird Num-Lock deaktiviert. Wie kann ich das wieder aktivieren per Makro?
Hier der Code:
Sub zurück()
' zurück Makro
' Makro am 6.12.2007 von Dirk Ehrhardt aufgezeichnet
Sheets("Terminübersicht").Select
ActiveWindow.LargeScroll Down:=-1
End Sub

Sub Excel_Control_Termin_nach_Outlook()
'E 2000
'Dim OutApp As Outlook.Application
Dim OutApp As Object, apptOutApp As Object
'Hier beginnen die Termine
Dim BlattName As String
Dim Zeile As Integer
Dim EmailNamen As String
BlattName = "Terminübersicht"
EmailNamen = "" 'hier können auch Termin an Emailempfänger versendet werden, Adressen mit  _
Semikolon trennen
For Zeile = 2 To Sheets(BlattName).UsedRange.Rows.Count
Set OutApp = CreateObject("Outlook.Application")
Set apptOutApp = OutApp.CreateItem(1) 'olAppointmentItem
If Sheets(BlattName).Cells(Zeile, 8) > 0 Then    'Datum vorhanden
If IsEmpty(Sheets(BlattName).Cells(Zeile, 9)) = True Then  'Status ohne Wert
With apptOutApp
'Datum wird die Termine aus der Zelle genommen
.Start = Format(Sheets(BlattName).Cells(Zeile, 8), "dd.mm.yyyy") & " 08:00"
'Termininfo
.Subject = "" & Sheets(BlattName).Cells(Zeile, 7) 'Betreff
'Zusätzlicher Text
Nachricht = Sheets(BlattName).Cells(Zeile, 2) & Chr(10) 'Text aus Nachrichtenfeld
'Nachricht = Nachricht & "weiterer Text möglich"
.Body = Nachricht
'Anzeige
.display
'ort
.Location = "Ort: " & Sheets(BlattName).Cells(Zeile, 3)
'Dauer. Angabe ist jeweils in ganzen Minuten zu setzen von 8:00 bis ...
.Duration = "5"
'Erinnerung
.ReminderMinutesBeforeStart = 10
'mit Sound :-)
.ReminderPlaySound = True
'Erinnerung wiederholen
.ReminderSet = True
'Wichtigkeit
.Importance = olImportanceHigh
'Status
.MeetingStatus = olMeeting
'Optionale Adressen
'.OptionalAttendees = EmailNamen
Application.DisplayAlerts = False
'Termin speichern
.Save
'Schließen ohne senden
Application.SendKeys "%DL"
'Senden an anderen EmailAdressen (Aktivierung: 1. Zeichen bei den nächsten 2 Zeilen  _
entfernen)
'.OptionalAttendees = EmailNamen
'Application.SendKeys "%S" '*** automatisch ohne überprüfung senden ***
Application.DisplayAlerts = True
'Erledigt setzen
Sheets(BlattName).Cells(Zeile, 9) = "in Outlook übernommen"
End With
'ActiveCell.Offset(1, 0).Select
'Variablen leeren,
End If
End If
Set apptOutApp = Nothing
Set OutApp = Nothing
Next Zeile
MsgBox "Termine an Outlook übertragen!"
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
altes Excelproblem ...
04.02.2020 05:53:41
Matthias
Hallo
Setze am Ende des Codes
SendKeys "{NUMLOCK}", True
SendKeys "{NUMLOCK}", True
Ja, tatsächlich 2x.
Gruß Matthias
AW: altes Excelproblem ...
04.02.2020 08:43:45
volti
Hi,
hier noch 'ne Variante. Da bei mir nur manchmal der NumLock verändert wurde, habe ich mir diese Sub gebaut, die sich den alten Zustand merkt und nach Veränderungen wiederherstellt.
Option Explicit
Private Declare PtrSafe Function GetKeyboardState Lib "user32" ( _
         pbKeyState As Byte) As Long
Private Const VK_NUMLOCK = &H90
Sub SendMyKeys(Was As String)
'Nummernblockeinstellung merken, SendKeys abschicken,
'Nummernblock ggf. wiederherstellen
 Dim Keys(0 To 255) As Byte, bNumBlock As Byte
 GetKeyboardState Keys(0): bNumBlock = Keys(VK_NUMLOCK)
 SendKeys Was
 GetKeyboardState Keys(0)
 If bNumBlock <> Keys(VK_NUMLOCK) Then SendKeys "{NUMLOCK}"
End Sub
Sub Excel_Control_Termin_nach_Outlook()
'...
  SendMyKeys "%DL"
'...
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Num-Lock wird deaktiviert
04.02.2020 08:45:38
volti
Hallo Thomas,
hier noch 'ne Variante. Da bei mir nur manchmal der NumLock verändert wurde, habe ich mir diese Sub gebaut, die sich den alten Zustand merkt und nach Veränderungen wiederherstellt.
Option Explicit
Private Declare PtrSafe Function GetKeyboardState Lib "user32" ( _
         pbKeyState As Byte) As Long
Private Const VK_NUMLOCK = &H90
Sub SendMyKeys(Was As String)
'Nummernblockeinstellung merken, SendKeys abschicken,
'Nummernblock ggf. wiederherstellen
 Dim Keys(0 To 255) As Byte, bNumBlock As Byte
 GetKeyboardState Keys(0): bNumBlock = Keys(VK_NUMLOCK)
 SendKeys Was
 GetKeyboardState Keys(0)
 If bNumBlock <> Keys(VK_NUMLOCK) Then SendKeys "{NUMLOCK}"
End Sub
Sub Excel_Control_Termin_nach_Outlook()
'...
  SendMyKeys "%DL"
'...
End Sub

viele Grüße
Karl-Heinz

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Num-Lock in Excel aktivieren und steuern


Schritt-für-Schritt-Anleitung

Um den Num-Lock in Excel zu aktivieren oder wiederherzustellen, kannst du das folgende VBA-Makro verwenden. Diese Methode nutzt die SendKeys-Funktion, um den Zustand des Num-Locks zu steuern. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Private Declare PtrSafe Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
    Private Const VK_NUMLOCK As Byte = &H90
    
    Sub ToggleNumLock()
        Dim Keys(0 To 255) As Byte
        GetKeyboardState Keys(0)
        If Keys(VK_NUMLOCK) = 0 Then
            SendKeys "{NUMLOCK}"
        End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro ToggleNumLock aus. Dies schaltet den Num-Lock ein, falls er deaktiviert ist.


Häufige Fehler und Lösungen

  • Num-Lock wird immer wieder deaktiviert: Wenn dein Num-Lock nach dem Ausführen eines Makros deaktiviert wird, füge am Ende deines Codes die folgende Zeile hinzu:

    SendKeys "{NUMLOCK}", True
    SendKeys "{NUMLOCK}", True
  • Makro funktioniert nicht auf Windows 10: Stelle sicher, dass deine Excel-Version VBA unterstützt und die Sicherheitseinstellungen das Ausführen von Makros erlauben.


Alternative Methoden

Wenn du den Num-Lock ohne VBA aktivieren möchtest, kannst du die folgenden Methoden verwenden:

  1. Manuell aktivieren: Drücke die Num-Taste auf deiner Tastatur, um den Nummernblock zu aktivieren.
  2. Über die Windows-Einstellungen: Gehe zu Einstellungen > Erleichterte Bedienung > Tastatur und aktiviere die Option für den Nummernblock.

Praktische Beispiele

Hier ist ein Beispiel, wie du den Num-Lock automatisch aktivieren kannst, wenn du ein Excel-Dokument öffnest:

Private Sub Workbook_Open()
    SendKeys "{NUMLOCK}"
End Sub

Dieses Makro wird automatisch ausgeführt, wenn das Workbook geöffnet wird und schaltet den Num-Lock ein.


Tipps für Profis

  • Verwende GetKeyboardState: Mit dieser Funktion kannst du den aktuellen Zustand des Num-Locks überprüfen, bevor du ihn umschaltest.
  • Fehlerbehandlung einbauen: Implementiere Fehlerbehandlung in deinem VBA-Code, um unerwartete Probleme zu vermeiden.
  • Automatisierung erweitern: Kombiniere die Num-Lock-Steuerung mit anderen automatisierten Prozessen in Excel, um deine Arbeitsabläufe zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich den Num-Lock beim Start von Excel aktivieren?
Du kannst das Makro Workbook_Open verwenden, um den Num-Lock bei jedem Öffnen einer Excel-Datei zu aktivieren.

2. Warum wird der Num-Lock durch andere Programme deaktiviert?
Einige Programme ändern den Zustand des Num-Locks. Das kann durch Hotkeys oder spezifische Programmeinstellungen geschehen. In solchen Fällen solltest du sicherstellen, dass dein Makro den Zustand überwacht und anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige