Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
320to324
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hilfsvariablen wollen plötzlich deklariert werden.

Hilfsvariablen wollen plötzlich deklariert werden.
09.10.2003 15:23:25
alex
Hallo zusammen.

Ich hab ein paar kleine makros geschrieben und dort variablen verwendet die mit

dim variable as ...

deklariert und andere zB.

H = msgbox("...",vbyesno)

Das Programm soll auf mehreren Rechnern laufen. Das tut es leider nicht. Bei einigen Rechnern muss ich das H von oben auf per dim deklarieren.

Alle Rechner verwenden die selbe Office Version,also auch dieselbe Excel Version und auch dieselbe VBA Version.

ich kann das Problem nicht finden.Viellicht könnt Ihr mir weiterhelfen.

Vielen Dank im Vorraus,Gruß Alex.

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfsvariablen wollen plötzlich deklariert werden.
09.10.2003 15:28:21
PeterW
Hallo Alex,

im VBA-Editor ist unter Extras - Optionen bei den "zickenden" Rechnern der Haken bei Variablendeklaration erforderlich gesetzt (sollte überall so gesetzt werden und der Code um die Variablendeklartion erweitert werden).

Gruß
Peter
Um Gottes Willen - nein!!!
09.10.2003 15:44:55
Michael Scheffler
Hallo Peter,

es gibt keine zickenden Rechner, erstens sollte "Option Explicit"
überall gemacht werden - über die Gründe können wir hier kleine Exkurse schreiben.

Und zweitens sitzen 90% der Computerprobleme 40 cm vor dem PC:-)

Gruß

Micha
DOCH!!!
09.10.2003 15:50:15
PeterW
Hallo Micha,

genau das mein ich doch, ohne Option Explicit macht man sich das Leben unnötig schwer. (Hab doch geschrieben: sollte überall so gesetzt sein - wie war das mit den 40 cm ? ;-))

Gruß
Peter
Anzeige
klasse
09.10.2003 16:48:43
alex
-vorab : Deklarierung der Variablen (Optionen des Editors ist nicht aktiviert)

1. Die Antworten sind zwar alle schön und gut, helfen mir aber keinen meter weiter.

2. Finde ich es schade,das Leute die evtl. Ahnung von VBA haben mir mit solchen sorry dummen Antworten(v.a. Micha) den Spass an der Sprache versaun. Und ganz davon abgesehen,ob die Antwort nun weiterhilft,oder nicht : wo ist denn der richtige Platz um
die Gründe zu erläutern? Wischiwaschi Programmierung ist nicht mein Ding,aber wenn das Programm (leider tat es das,im Nachhinein gesehen) Makros akzeptiert in denen nicht alle Variablen explizit deklariert wurden und anstelledessen immer auf Varaint verweisst, wozu soll ich mir dann die Mühe der Deklarierung machen?

Also nochmal : wie bekommt man die Makros bei allen Rechnern zum laufen?
Anzeige
AW: klasse
09.10.2003 16:59:27
PeterW
Hallo Alex,

nur mal zwei Gründe.

Vielleicht gelingt es dir, Code von vornherein fehlerfrei zu schreiben, ich hab zumindest immer ein paar Tippfehler drin. Da wird aus lglastrow schnell mal lgladtrow. Wenn ich zu Beginn lgLastRow dimensioniert habe sagt mir der Debugger sofort, wo der Fehler liegt. Davon abgesehen seh ich das schon bei der Eingabe, weil die Schreibweise der dimensionierten Variablen übernommen wird.

Wenn aus der Variablenbezeichnung auch noch hervorgeht, um welchen Typ es sich handelt werden logische Fehler beim Lesen des Codes sofort erkannt. Mit Variant-Variablen kann man sich einen Wolf suchen.

Mir stellt sich die Frage andersrum, warum soll ich mir die Mühe machen bei der Fehlersuche und die relativ einfache Deklaration überspringen. :-)

Gruß
Peter
Anzeige
AW: klasse
09.10.2003 17:21:57
alex
Solche Probleme hatte ich natürlich und ich hab mir auch schon ein,zweimal vor die Stirn geklatscht deswegen, aber nun muß ich wasweissich wieviele Makros umschreiben.Das dauert min. 2 Tage deswegen such ich ja wie ein Wolf nach einer "vernünftigen" Lösung.

Wieso der Code , bzw an die 200 Codes nun am Entwicklungsrechner funktionieren und an manch anderen Rechnern nicht will aber immernoch nicht in mein Kopf rein,trotz ständigem auf die Stirn klatschen.

Das ich dann über schnippische Antworten verärgert bin ist hoffentlich verständlich.
Da ich VBA nun eher durch LBD als durch Programmierkurse gelernt hab, hatte ich das Problem mit der Deklaration nicht im Blickfeld.Mal ganz davon abgesehen das es erst Heute aufgetreten ist.

Eine Lösung des Problems (ohne Codeänderung) git es also nicht?
Anzeige
AW: klasse
09.10.2003 17:31:26
PeterW
Hallo Alex,

das hab ich doch oben schon geschrieben. An den Rechnern, an denen deine Makros nicht funktionieren ist im VBA-Editor unter Extras - Optionen die explizite Variablendeklaration gekennzeichnet. Wenn man dort den Haken rausnehmen würde, was man tunlichst nicht sollte, dann .... ;-)

Gruß
Peter
AW: klasse
09.10.2003 17:36:41
alex
neeeeeeeee
eben das funktioniert ja leider nicht ...

Hab den HAken schon reinundrausgemacht , bis er schwarz wurde. Das interessiert die Makros aber kein bischen.
AW: klasse
09.10.2003 17:44:02
PeterW
Hallo Alex,

ist jetzt ein Stochern im Nebel, vielleicht irgendwelche Verweise, die fehlen? Lade doch mal eine Beispieldatei mit einem nicht funktionierenden Makro auf den Server.

Gruß
Peter
Anzeige
Code ...
09.10.2003 17:50:20
alex
Hier ist eins der kleineren ...


Sub AllIn_TEST_freieEinträge()
Dim sheet As String
AllIn_DBTEST.Show
wohin = AllIn_DBTEST.result
If wohin = 0 Then
MsgBox ("Keine Datenbank ausgewählt")
Unload AllIn_DBTEST
End
End If
If wohin = 1 Then
Sheets("Produktions-Rezepturen-1").Select
sheet = ActiveSheet.name
End If
If wohin = 3 Then
Sheets("Entwicklungs-Rezepturen-1").Select
sheet = ActiveSheet.name
End If
If wohin > 3 Then
Sheets("Entwicklungs-Rezepturen-1").Select
sheet = ActiveSheet.name
wohin = 0
End If
Application.ScreenUpdating = False
weiter1:
Range("h:h,DD:DD").Select
Dim artnr As String
Dim fs4, f4
With Selection
Set found = .Find(what:="Freie", lookat:=xlPart)
If found Is Nothing Then
Set fs4 = CreateObject("Scripting.FileSystemObject")
Set f4 = fs4.OpenTextFile("c:\Fehler_REZListe_freieEintraege.txt", 8, True)
f4.write "Keinen Freien Eintrag gefunden." + vbNewLine
f4.Close
End If
foundfirst = found.Address
If Not found Is Nothing Then
Do
'found.Activate
If (found.Offset(0, 4) <> 0) Then
Set fs4 = CreateObject("Scripting.FileSystemObject")
Set f4 = fs4.OpenTextFile("c:\Fehler_REZListe_freieEintraege.txt", 8, True)
f4.write "Freien Eintrag mit Preis in Zeile " + Str(found.Row) + "gefunden." + vbNewLine
f4.Close
found.Offset(0, 4) = 0
r = found.Row
c = found.Column
artnr = found.Offset(0, -7)
Sheets("Art.Nr.Hilfsblatt").Select
Range("a1").Select
'MsgBox (artnr)
Do Until (ActiveCell = artnr)
Selection.Offset(1, 0).Select
Loop
Selection.Offset(0, 16) = r
Selection.Offset(0, 17) = c
Sheets(sheet).Select
End If
Set found = .FindNext(found)
Loop While found.Address <> foundfirst
Else
End
End If
Call makeNewSheetName(sheet)
For k = 1 To Sheets.Count
If Sheets(k).name = sheet Then
Sheets(sheet).Select
nextline = 0
GoTo weiter1
End If
Next k
If wohin = 0 Then
Sheets("Produktions-Rezepturen-1").Select
sheet = ActiveSheet.name
nextline = 0
wohin = 1
GoTo weiter1
End If
End With
End Sub



Beim Debuggen (F8) meldet sich nun der VBA-Editor mit :

Fehler beim Kompilieren.
Projekt doer Bibliothek nicht gefunden.

in der Zeile : wohin = AllIn_DBTEST.result (also die 2. oder 3. )
Anzeige
AW: Code ...
09.10.2003 17:51:53
alex
achja .. wohin ist mit Public im Formular deklariert.... hier der COde.

Public result As Integer


Private Sub bntAbbruch_Click()
Hide
End Sub



Private Sub bntHilfe_Click()
AllIn_DBTEST_Hilfe.Show
End Sub


Private Sub bntWeiter_Click()
i = 0
If CheckBox1 Then
i = i + 1
End If
If CheckBox2 Then
i = i + 3
End If
result = i
Hide
End Sub

AW: Code ...
09.10.2003 17:55:55
Alex
nun soll ich auch noch das k in

for k = 1 to .... deklarieren??? Das kann aber nicht ernsthaft gemeint sein?!?
Anzeige
AW: Code ...
09.10.2003 18:00:56
PeterW
Hallo Alex,

klar kann das sein, nämlich dann wenn Variablendeklaration erforderlich ist.

Überprüfe mal ob im VBA-Editor unter Extras - Verweise die Verweise auf allen Rechnern identisch sind.

Der Code selber hilft ohne die dazu gehörende Mappe nicht weiter weil wohl kaum jemand aufgrund des Codes eine Mappe nachbauen wird.

Gruß
Peter
AW: Code ...
09.10.2003 18:06:46
Alex
Die Mappe braucht man ja garnicht. Das der Editor einen Feheler ausspuckt kann man auch per copy&paste sehn.

Zu den Verweisen ... die kann ich nicht anwählen,sind grau.Zumindest bei meinem.An die anderen Rechner komm ich leider nicht ran,ist auch schon nach Öffnungszeit,kann ich erst morgen nachfragen. Vielleicht sollten wir das auf morgen verschieben,wenn ich Informationen über 3 oder 4 weitere Testrechner habe.Dann kann ich evtl auch mit ner kleinen Beispielmappe aufwarten.
Anzeige
AW: Code ...
09.10.2003 18:23:41
PeterW
Hallo Alex,

ohne Mappe läßt sich kein Code testen, der auf eine nicht vorhandene Userform zugreifen möchte.

Starte morgen mit einer Beispielmappe einen neuen Thread.

Gruß
Peter
Hinweis
09.10.2003 21:37:23
Martin Bolleter
Hallo ihr beiden

nur als Hinweis: wenn die Option für explicite Variablendeklaration mal gesetzt war, wurde in alle Module am Anfang "Option Explicit" geschrieben. Diese Anweisung erzwingt die Deklaration.
Das Entfernen des Häckchens in den Optionen löscht nun allerdings diese Anweisung(en) nicht automatisch wieder! Das müsste man dann schon von Hand in allen Modulen tun, so man das den will ... :-)

Gruss
Martin
Anzeige
AW: Hinweis
09.10.2003 21:51:19
PeterW
Hallo Martin,

vielen Dank für diesen Hinweis, mir war nicht klar, dass Option Explicit nicht wieder aus dem Code entfernt wird. Wie soll man das auch wissen, wenn man immer MIT dieser Option arbeitet. :-)

Danke nochmals und Gruß
Peter
AW: Hinweis
09.10.2003 23:16:27
Guido Palacios
Hallöchen,

auch eine Ursache des Problems kann die Umgebung sein! Vielleicht sind die Testserver ältere Modelle (NT4, excel97)! Weiss nicht wie es mit der Variablendekl. aussieht aber mit einigen Funktionen wars so!

Aber du kannst dir auch ein Progg schreiben welches alle Makros durchgeht und entsprechen dim anweisungen spezifiziert...!

CYA
Guido
AW: Hilfsvariablen wollen plötzlich deklariert werden.
09.10.2003 15:48:33
GerdW
Wenn du eine Chance haben willst, dass deine Programme stabil laufen,
solltest du immer alle Variablen möglichst genau deklarieren.

Gerd
AW: Hilfsvariablen wollen plötzlich deklariert werden.
10.10.2003 09:57:36
Michael Scheffler
Hallo Alex,

"dumm" oder nicht, das ist hier die Frage. Ich habe VB auch durch learning by doing gelernt. Das sollte einen jedoch nicht davor bewahren, mal die Nase in ein Buch zu stecken oder sich Codebeispiele wie von Hans anzuschauen.

Aber es ist schon gut so, immer schön an der Oberfläche bleiben, beleidigt sein, weiter schlechten Code schreiben. Da bleibt für gute Programmierer doch immer etwas übrig:-)

Gruß

Micha

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige