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
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