Zeilennummer in VBA

Hallo Freunde
Gibt es eine Möglichkeit im Editor von Visual Basic die Zeilennummern anzuzeigen? Ich finde nichts unter Optionen!
Danke
Erich

Hallo Freunde
Gibt es eine Möglichkeit im Editor von Visual Basic die
Zeilennummern anzuzeigen? Ich finde nichts unter Optionen!
Danke
Erich

Hallo
In der IDE von VB5 gibt es keine Option dafür. Man kann bei der Eingabe aber wahlweise Zeilennummern oder Label verwenden.
MfG
Matthias

Gibt es eine Möglichkeit im Editor von Visual Basic die
Zeilennummern anzuzeigen? Ich finde nichts unter Optionen!

Hallo Erich,
ich weiß nicht ob das mit Bordmitteln geht, aber may be.
Schau mal hier:
http://groups.google.de/group/microsoft.public.de.ex…
O.T., bei deutsch/englisch hast du noch nicht geantwortet, magst du mir sagen warum?
Gruß
Reinhard

Hallo Reinhard

http://groups.google.de/group/microsoft.public.de.ex…

Genau so etwas habe ich gesucht! Vielen Dank, es klappt prima.

O.T., bei deutsch/englisch hast du noch nicht geantwortet,
magst du mir sagen warum?

Ganz einfach: Ich habe die Sache mit FRUST als erledigt betrachtet, da ich nicht auf weitere Tipps hoffte!
Jetzt habe ich deine Meldung „entdeckt“ und überflogen und werde dir demnächst darüber berichten.
Vorab dies:
Ich benutze nicht 2 parallele Excel E/D, sondern D auf dem Desktop und E auf dem Laptop.
Aus unerfindlichen Gründen heisst das englische „personal.xls“ in der deutschen Version „personl.xls“ (Obwohl: mein PC heisst auch D Personal Computer, obwohl ich kein Personal beschäftige) Die Folgen sind jedoch verheerend! Wenn du ein Makro in eine Symbolleiste einfügst, geht es nur mit EINEM fixen Namen, den du nicht ändern kannst, da keine Editiermöglichkeit vorhanden ist. Ich habe mich deshalb nach langwierigen Misserfolgen entschlossen, einen eigenen Namen „MyMacros.xls“ für alle meine Makros zu verwenden, damit ich sie auf beiden Rechnern laufen lassen kann. Man muss jedoch höllisch aufpassen, dass das schlaue Excel einem nicht wieder ein Personl.xls macht!
Wahrscheinlich kannst du nicht beide Versionen GLEICHZEITIG offen haben, da Excel immer das entsprechende Template ausgeblendet öffnet. Wenn du dann an den Makros etwas ändern willst, protestiert das andere Excel und völlig verwirrlich wird es, wenn du speichern willst.
Ich habe vor wohl über einem Jahr hier eine gute Anleitung bekommen, um dafür zu sorgen, dass immer nur EINE Instanz von Excel geöffnet werden kann. Das macht Sinn, sobald man Makros zentral ablegen will. Warum das nicht schon in Excel selbst gesperrt ist, weiss ich nicht (und der Bill wohl auch nicht); ich könnte ja ohne weiteres mehrere Workbooks in einer Instanz laufen lassen (umschalten mit „Fenster“). Aber dazu wäre noch Manches zu sagen …
Du wirst wieder von mir hören, bis dahin beste Grüsse
Erich

Nachtrag
Weitere Kommentare unter „Tabllenkalkulation“ beim Original-Thread

Hallo Erich,

Aus unerfindlichen Gründen heisst das englische „personal.xls“
in der deutschen Version „personl.xls“ (Obwohl: mein PC heisst
auch D Personal Computer, obwohl ich kein Personal
beschäftige) Die Folgen sind jedoch verheerend! Wenn du ein
Makro in eine Symbolleiste einfügst, geht es nur mit EINEM
fixen Namen, den du nicht ändern kannst, da keine
Editiermöglichkeit vorhanden ist.

Warum änderst du nicht bei Starten von Excel die .OnAction-Funktion des Makros dass du als Symbol eingefügt hast? Oder sowieso erst zu diesem Zeitpunkt das Makro als Symbol ablegen.

if D then
.OnAction="Personl.xls!Makroname
else
.OnAction="PersonAl.xls!Makroname
end if

Da ja durch die 2 Namen klar ist welches Excel läuft (D/E) musst du doch nur nach Person?l.xls suchen. K.A. in welchen Verzeichnissen die immer stehen könnte, also würde ich , da superschnell, aufs gut alte Dos zurückgreifen oder halt mit FileSearch…

Option Explicit
Function Deutsch() As String
Dim Progr, Satz
Close
Open "C:\test\kurz.bat" For Output As #1
Print #1, "dir c:\personl.xls /s/b \> c:\test\kurz.txt" 
Print #1, "dir c:\personal.xls /s/b \>\> c:\test\kurz.txt" 
Close
Progr = Shell("C:\test\kurz.bat")
Open "C:\test\kurz.txt" For Input As #1
While Not EOF(1)
 Input #1, Satz
Wend
Close
If Satz = "" Then
 Deutsch = "Keine person?l.xls"
 Exit Function
ElseIf UCase(Mid(Satz, InStrRev(Satz, "\") + 1)) = "PERSONL.XLS" Then
 Deutsch = "D"
Else
 Deutsch = "E"
End If
End Function

Sub tt()
MsgBox Deutsch
End Sub

Ich habe mich deshalb nach
langwierigen Misserfolgen entschlossen, einen eigenen Namen
„MyMacros.xls“ für alle meine Makros zu verwenden, damit ich
sie auf beiden Rechnern laufen lassen kann. Man muss jedoch
höllisch aufpassen, dass das schlaue Excel einem nicht wieder
ein Personl.xls macht!

Ist ja stressig, Fehleranfälli…

Wahrscheinlich kannst du nicht beide Versionen GLEICHZEITIG
offen haben, da Excel immer das entsprechende Template
ausgeblendet öffnet. Wenn du dann an den Makros etwas ändern
willst, protestiert das andere Excel und völlig verwirrlich
wird es, wenn du speichern willst.

In dem Fall müßte auch meine Funktion angepasst werden.

Ich habe vor wohl über einem Jahr hier eine gute Anleitung
bekommen, um dafür zu sorgen, dass immer nur EINE Instanz von
Excel geöffnet werden kann. Das macht Sinn, sobald man Makros
zentral ablegen will.

Wie sieht diese Anleitung aus?
Mit API ginge das so:

Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, \_
 ByVal wCmd As Long) As Long
Private Declare Function GetClassName& Lib "user32" Alias \_
 "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName \_
 As String, ByVal nMaxCount As Long)
Private Const GW\_CHILD = 5
Private Const GW\_HWNDNEXT = 2

Function ExcelInstanzen() As Long
Dim Länge&, Instanzen&, hwnd&
Dim Klassenname As String
hwnd = GetWindow(GetDesktopWindow, GW\_CHILD)
Do
 Klassenname = String(51, 0)
 Länge = GetClassName&(hwnd, Klassenname, 50)
 If Left(Klassenname, Länge) = "XLMAIN" Then Instanzen = Instanzen + 1
 hwnd = GetWindow(hwnd, GW\_HWNDNEXT)
Loop While hwnd 0
ExcelInstanzen = Instanzen
End Function

sub tt()
msgbox Excelinstanzen
end sub

Nachstrehend Code, der mir hilfreich ist, dass egal ob eine „alte“ Datei geöffnet wird oder eine neue angelegt wird auf jeden Fall ein Verweis auf Forms 2.0 Object Library gesetzt ist. Weiterhin stellt der Code die Berechnung auf automaschich weil aus unerfindlichen Günden gelegentlich dies bei mir auf manuell steht.
Da wo dies geschieht könntest du die Excelinstanzen zählen und wenn 2 dann die Datei schliessen.
objWorkbook.close
Und wenn es eine vorhandene Datei ist, diese mit der anderen Excelinstanz öffnen, irgendwie mit GetObject(,Excel.Application).

Für den Code brauchst du ein Klassenmodul mit dem Namen: „clsApplication“
In diesem Klassenmoodul:

Option Explicit

Private WithEvents mobjApplication As Application

Public Property Set prpApplication(objApplication As Application)
Set mobjApplication = objApplication
End Property

Private Sub mobjApplication_NewWorkbook(ByVal Wb As Workbook)
Call prcAddReverence(Wb)
End Sub

Private Sub mobjApplication_WorkbookOpen(ByVal Wb As Workbook)
Call prcAddReverence(Wb)
End Sub

In DiewseArbeitsmappe:

Option Explicit
Private objApplication As clsApplication
Private Sub Workbook_Open()
'Application.Caption = „Reinhard“
Set objApplication = New clsApplication
Set objApplication.prpApplication = Application
End Sub

In ein Modul:

Option Explicit

Private Const FM20\_GUID = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}"

Public Sub prcAddReverence(objWorkbook As Workbook)
 Dim intIndex As Integer
 Dim blnFound As Boolean
 On Error GoTo err\_exit
 With objWorkbook.VBProject.References
 For intIndex = 1 To .Count
 If .Item(intIndex).GUID = FM20\_GUID Then
 If .Item(intIndex).IsBroken Then
 .Remove .Item(intIndex)
 Else
 blnFound = True
 End If
 End If
 Next
 If Not blnFound Then \_
 .AddFromGuid GUID:=FM20\_GUID, Major:=2, Minor:=0
 End With
 objWorkbook.Application.Calculation = xlCalculationAutomatic
 Exit Sub
err\_exit:
 MsgBox "Fehler " & CStr(Err.Number) & vbLf & \_
 vbLf & Err.Description, vbCritical, "Fehler"
End Sub

Bitte keine Rückfragen zu Klassenmodule*g, kenne mich da Null aus.

Gruß
Reinhard