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

per VBA Tabtaste aktivieren

per VBA Tabtaste aktivieren
16.12.2020 11:24:01
David
Guten Tag,
ich habe in der VBA ein Code geschrieben in dem zum Schluss das Tabellenblatt gesperrt wird.
Allerdings sobald die Sperre aktiviert wird, kann man mit der TAB-Taste nicht mehr arbeiten.
Kann ich per VBA erzwingen das per TAB Tastendruck wie gewohnt eine Zeile weiter springt?

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Sheets("Protokoll").Unprotect Password:="xxx"
Dim ErsteFreieZeile As Long
If Target.Count > 1 Then Exit Sub
If Sh.Name = "Protokoll" Then Exit Sub
If Intersect(Target, Sh.Range("A1:AS47")) Is Nothing Then Exit Sub
With Sheets("Protokoll")
ErsteFreieZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(ErsteFreieZeile, 1) = Sh.Name
.Cells(ErsteFreieZeile, 2) = Target.Address(0, 0)
.Cells(ErsteFreieZeile, 3) = Target.Value
.Cells(ErsteFreieZeile, 4) = Date
.Cells(ErsteFreieZeile, 5) = Time
.Cells(ErsteFreieZeile, 6) = Environ("username")
Sheets("Protokoll").Protect Password:="xxx"
End With
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per VBA Tabtaste aktivieren
16.12.2020 11:38:19
Edi
Moin David
Zunächst mal:
Deine Zeile mit der Du das Blatt schützt, sollte entwerder unter das End With, oder aber mit .Protect beginnen.
Wenn Du danach noch die Zeile
Sheets("Protokoll").EnableSelection = xlNoRestrictions
(oder innerhalb des with nur .EnableSelection = xlNoRestrictions)
einfügst, sollte ein springen mit Tab wieder möglich sein.
Gruß
Edi
AW: per VBA Tabtaste aktivieren
16.12.2020 11:46:21
Nepumuk
Hallo David,
so:
Option Explicit

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Protokoll" Then
        Call Application.OnKey("{TAB}", "Tabulator")
    Else
        Application.OnKey "{TAB}"
    End If
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    
    Dim ErsteFreieZeile As Long
    
    If Target.Count = 1 Then
        
        If Not Intersect(Target, Sh.Range("A1:AS47")) Is Nothing Then
            
            Application.EnableEvents = False
            
            With Worksheets("Protokoll")
                
                ErsteFreieZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                
                .Unprotect Password:="xxx"
                .Cells(ErsteFreieZeile, 1) = Sh.Name
                .Cells(ErsteFreieZeile, 2) = Target.Address(0, 0)
                .Cells(ErsteFreieZeile, 3) = Target.Value
                .Cells(ErsteFreieZeile, 4) = Date
                .Cells(ErsteFreieZeile, 5) = Time
                .Cells(ErsteFreieZeile, 6) = Environ("username")
                .Protect Password:="xxx"
                
            End With
            
            Application.EnableEvents = True
            
        End If
    End If
End Sub

Zusätzlich in einem Standardmodul (Menüleiste - Einfügen - Modul):
Option Explicit

Public Sub Tabulator()
    With ActiveCell
        Cells(.Row, .Column + 1).Select
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: per VBA Tabtaste aktivieren
16.12.2020 12:38:53
David
Wow, das ging schnell und vielen Dank, noch ein kleiner Nachtrag.
Mit
If Sh.Name = "Protokoll"
Wird bloß die Funktion in der Tabelle "Protokoll" aktiv, was muss ich schreiben damit
das für die ganze Mappe gilt?
Vielen Dank.
AW: per VBA Tabtaste aktivieren
16.12.2020 12:42:31
Nepumuk
Hallo David,
dann an Stelle von:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Protokoll" Then
        Call Application.OnKey("{TAB}", "Tabulator")
    Else
        Application.OnKey "{TAB}"
    End If
End Sub

das:
Private Sub Workbook_Activate()
    Call Application.OnKey("{TAB}", "Tabulator")
End Sub

Private Sub Workbook_Deactivate()
    Call Application.OnKey("{TAB}")
End Sub

Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige