124 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)

Hallo,

für eine Protokolldatei benötige ich die Bezeichnung des Codes, der gerade ausgeführt wird. Ich habe einiges "probiert", kriege es aber nicht hin. 

Dim vbcO As Object, strName as String 

With ThisWorkbook.VBProject.VBComponents
        strName = Active.CodeModule.name
End With

Hat jemand einen Tipp, wie as gehen könnte? Danke und Gruß A.

2 Antworten

+1 Punkt
Beantwortet von xlking Experte (1.5k Punkte)

Hallo A.

Ich glaube das geht nicht! Zumindest nicht auf elegantem Weg. Du kannst nur die Zeilen eines zuvor festgelegten Codefensters auslesen. Aber nicht den Namen der Prozedur in der sich der Pointer beim Durchlaufen grade befindet.

Vorschlag: Definiere eine öffentliche Variable im Modulkopf eines Standardmoduls. Schreibe zu Beginn einer jeden Prozedur sowie nach der Rückkehr von eventuellen Unterprozeduren deren Namen in die Variable. Anschließend kannst du die Variable zu einem beliebigen Zeitpunkt auswerten.

z.B. Code für Modul1

Public AktProc As String
Sub Prozedur1()
  Dim Proc As String
  Proc = "Prozedur1"
  
  AktProc = Proc
  Debug.Print AktProc
  
  '+ Sonstiger Code
  Call Prozedur2 'Aufruf einer Unterprozedur
  
  AktProc = Proc
  Debug.Print AktProc
  
  '+ weiterer Code
End Sub
Sub Prozedur2()
  AktProc = "Prozedur2"
  Debug.Print AktProc
  
  '+ Sonstiger Code
End Sub

Du musst allerdings bei Änderungen im Namen einer Prozedur auch den entsprechenden Text für die Variable anpassen. Da wirst du nicht umhinkommen. Ein eleganterer Weg ist zumindest mir nicht bekannt.

Gruß Mr. K.

0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hmmm.... ich habe es fast befürchtet, aber danke für deine Antwort. Ich versuche das mal so.

Danke und Gruß A.
...