Non è molto carina, ma è possibile utilizzare Application.SendKeys per aggiungere orologi. Non ho idea se le impostazioni internazionali della lingua influenzano i tasti di scelta rapida. Quanto segue vale per l'inglese.
La limitazione è che è possibile utilizzare solo cose come Modulo corrente o Tutti i moduli (ad esempio, scorrere fino in fondo o completamente verso il basso), ma non un altro specifico modulo per l'ambito. Probabilmente potresti risolvere questa limitazione usando il VBIDE per scoprire quanti moduli ci sono ecc, e quindi quante volte scorrere verso l'alto per un particolare modulo. Non ho fatto questo per il codice qui sotto come questa è una prova di concetto - Lascio la parte divertente a voi :-)
Uso: chiamata AddWatch sub con gli argomenti specificati. È possibile aggiungerli a un sottotitolo che si chiama quando si avvia una nuova sessione, come illustrato nel mio "HelloNewSession()"
Il VBE deve essere a fuoco quando viene eseguito il codice. È possibile farlo manualmente o utilizzare l'oggetto VBIDE per impostare lo stato attivo.
Option Explicit
Enum enumWatchType
WatchExpression
BreakWhenTrue
BreakWhenChange
End Enum
Enum enumProceduresType
AllProcedures
Caller
End Enum
Enum enumModuleType
AllModules
CurrentModule
ThisWorkbook
End Enum
Public testVar As Boolean
Sub HelloNewSession()
AddWatch "testVar = True", AllProcedures, CurrentModule, BreakWhenTrue
testVar = True
End Sub
Sub AddWatch(_
expression As String, _
Optional proceduresType As enumProceduresType = enumProceduresType.Caller, _
Optional moduleType As enumModuleType = enumModuleType.CurrentModule, _
Optional watchType As enumWatchType = enumWatchType.WatchExpression)
Dim i As Long
Application.SendKeys "%DA"
Application.SendKeys getEscapedSendkeysText(expression)
If proceduresType = enumProceduresType.AllProcedures Then
Application.SendKeys "%p"
For i = 1 To 1000 'You could use VBIDE to count the valid types to actually scroll up the right number of times!
Application.SendKeys "{UP}"
Next
End If
If moduleType = enumModuleType.AllModules Then
Application.SendKeys "%m"
For i = 1 To 1000 'You could use VBIDE to count the valid types to actually scroll up the right number of times!
Application.SendKeys "{UP}"
Next
ElseIf moduleType = enumModuleType.ThisWorkbook Then
Application.SendKeys "%m"
For i = 1 To 1000 'You could use VBIDE to count the valid types to actually scroll up the right number of times!
Application.SendKeys "{DOWN}"
Next
End If
Select Case watchType
Case enumWatchType.WatchExpression
Application.SendKeys "%w"
Case enumWatchType.BreakWhenTrue
Application.SendKeys "%t"
Case enumWatchType.BreakWhenChange
Application.SendKeys "%c"
End Select
Application.SendKeys "~"
End Sub
Function getEscapedSendkeysText(ByVal text As String) As String
Dim char As String, i As Long
Const chars As String = "~%+^()[]"
For i = 1 To Len(chars)
char = Mid$(chars, i, 1)
text = Replace(text, char, "{" & char & "}")
Next
getEscapedSendkeysText = text
End Function
fonte
2015-11-12 17:34:40
Si potrebbe aggiungere questi come commenti nel codice (in alto) e poi copia/incolla questi in lLa orologi – MiguelH
si può spostarli in una classe come proprietà, poi hanno la proprietà lasciate funzione di debug.? VARIABLE_NAME, VALUE? –
@MiguelH Sembra molto tempo per me. Selezione di contesto e proprietà ogni volta. – ChrisUnbroken