automatisch quellcode nummerieren. für on error und Erl als Anzeige, welcher befehl.

04/02/2010 - 13:35 von michlchen | Report spam
servus.

ich wollte in meine makros gerne ne 100 %ige fehlerbahandlung
einbauen. die meisten fehler fange ich an den entsprechenden stellen
ab. ich will aber, dass der ("dumme") user nie auf einen debug làuft
und habe daher in etwa folgende fehlerbehandlung eingebaut...

On Error GoTo Errorhandler

10 ActiveWorkbook.Unprotect ("abc")
20 Application.ScreenUpdating = False


30 With Worksheets("blatt1").Range("A1:Z1000")
40 Set C = .Find("irgendwas Identification", LookIn:=xlValues)
50 If Not C Is Nothing Then
60 Row1 = C.Offset(1, 2).Row
End If
End With
70 Sheet = Cells(Row1 + 1, 3)

80 Sheets("Blatt2").Visible = True
90 Sheets("Blatt2").Unprotect ("cba")
100 Sheets("Blatt2").Select
...

3420 Exit Sub
Errorhandler:
MsgBox "Please close the file unsaved and contact mich!." &
Chr(10) & Chr(10) & Err.Number & ": " & Err.Description & Chr(10) &
Chr(10) & "Prozedure: ""verw_irgendwas"" bei: " & Erl - geht dann
noch aufn blatt, damit nur ich es öffnen und wieder freischalten kann,
wenn ich weis was schief gelaufen ist. ...

jetzt zeigt er mir ja unter Erl an, an welcher Stelle er ausgestiegen
ist. klappt auch prima nur möchte ich NICHT meinen ganzen quellcode
durchnummerieren müssen.

geht das irgendwie automatisch??? danke für die hilfe. sonst muss ich
da 2 tage nen prakti dran setzen...
 

Lesen sie die antworten

#1 Andreas Killer
05/02/2010 - 12:36 | Warnen spam
On 4 Feb., 13:35, michlchen wrote:

ist. klappt auch prima nur möchte ich NICHT meinen ganzen quellcode
durchnummerieren müssen.

geht das irgendwie automatisch??? danke für die hilfe. sonst muss ich
da 2 tage nen prakti dran setzen...


Kannst ja den Quellcode einlesen und durchnummerieren.

So grob ist das kein Ding, nur müssen ja nicht alle Zeilen nummeriert
werden, alles was "Sub" oder "Private Sub", etc. etc. etc. heißt darf
nicht nummeriert werden, ebenso Kommentare und durch _ überhàngende
Zeilen nicht...

Andreas.

Sub Test()
Dim S As String
Dim Data, I As Long
Dim Zeile, J As Long
Dim Nr As Long
S = ReadModul("Modul1")
Data = Split(S, vbCrLf)
For I = LBound(Data) To UBound(Data)
If Len(Data(I)) > 0 Then
Nr = Nr + 10
Zeile = Split(Data(I), " ")
If IsNumeric(Zeile(0)) Then
Zeile(0) = Nr
Data(I) = Join(Zeile, " ")
Else
Data(I) = Nr & " " & Data(I)
End If
End If
Next
S = Join(Data, vbCrLf)
WriteModul "Modul1", S
End Sub

Private Function ReadModul(ByVal ModulName As String, Optional _
WB As Workbook = Nothing) As String
'Liest ein Modul ein
Dim CM As Object 'CodeModule
If WB Is Nothing Then Set WB = ActiveWorkbook
On Error GoTo ExitPoint
Set CM = WB.VBProject.VBComponents(ModulName).CodeModule
ReadModul = CM.Lines(1, CM.CountOfLines)
ExitPoint:
End Function

Private Sub WriteModul(ByVal ModulName As String, Contents As _
String, Optional WB As Workbook = Nothing)
'Überschreibt ein Modul
Dim CM As Object 'CodeModule
If WB Is Nothing Then Set WB = ActiveWorkbook
On Error GoTo ExitPoint
Set CM = WB.VBProject.VBComponents(ModulName).CodeModule
CM.DeleteLines 1, CM.CountOfLines
CM.AddFromString Contents
ExitPoint:
End Sub

Ähnliche fragen