Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
424to428
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
424to428
424to428
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bekomme die Schleife nicht zum laufen

Bekomme die Schleife nicht zum laufen
08.05.2004 21:58:34
Glen
Hallo Excelfreunde
Ich habe hier im Forum einen Vorschlag erhalten, dass ich für meine Funktion eine Schleife einbauen muss. Die Schleife gibt jetzt die Fehlermeldung aus (Variable nicht definiert). Kann mir jemand sagen, was hier falsch ist?
Die Schleife soll bewirken, dass das Makro nicht nur in Tabelle1 läuft, sondern auch dann, wenn ich Tabelle1 kopiere und Tabelle2, 3, 4 usw. nutzen möchte.
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim varvergleichsArray As Variant, lngIndex As Long, bolgeaendert As Boolean
If Not SaveAsUI Then
For i = 1 To Worksheets.Count
varvergleichsArray = Worksheets(i).Range("A1:A50")
For lngIndex = 1 To 50
If varvergleichsArray(lngIndex, 1) <> varArray(lngIndex, 1) Then bolgeaendert = True: Exit For
Next
If bolgeaendert Then
mailen
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
varArray = Worksheets(i).Range("A1:A50")
Cancel = True
End If
Next i
End If
End Sub


Private Sub Workbook_Open()
For i = 1 To Worksheets.Count
varArray = Worksheets("Tabelle(i)").Range("A1:A50")
Next i
End Sub

Gruss
Glen

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Dim i as Byte
08.05.2004 22:06:56
Franz W.
Hallo Glen,
schreib mal unter die zweite ZEile:
Dim i as Byte
Damit müsste es gehen
Grüpße
Franz
AW: Dim i as Byte
08.05.2004 22:14:38
Glen
Hallo Franz
Es tut noch immer nicht?
Gruss
Glen
Dann bitte genauer...
08.05.2004 22:21:33
Franz W.
Hallo Glen,
welche Fehlermeldung kommt?
Und welche Zeile ist dann gelb unterlegt?
Grüße
Franz
AW: Dann bitte genauer...
08.05.2004 22:25:02
Glen
Hallo Franz
Also Gelb wird die Zeile bei

Private Sub Workbook_Open()
und die Fehlermeldung markiert das i, dass nach For steht.
Ich hoffe du kommst damit klar. Ich kann das Teil bei Bedarf auch mal hochladen.
Gruss
Glen

Private Sub Workbook_Open()
For i = 1 To Worksheets.Count
varArray = Worksheets("Tabelle(i)").Range("A1:A50")
Next i
End Sub

Anzeige
Und wie lautet die Fehlermeldung?
08.05.2004 22:33:56
Franz W.
Hallo Glen,
hast du wirklich "Dim i as Byte" reingeschrieben ??? Dann darf i nicht mehr angemahnt werden !!!
Franz
AW: Und wie lautet die Fehlermeldung?
08.05.2004 22:39:21
Glen
Hallo Franz
Ja habe ich.....schau mal
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim varvergleichsArray As Variant, lngIndex As Long, bolgeaendert As Boolean
Dim i As Byte
If Not SaveAsUI Then
For i = 1 To Worksheets.Count
varvergleichsArray = Worksheets(i).Range("A1:A50")
For lngIndex = 1 To 50
If varvergleichsArray(lngIndex, 1) <> varArray(lngIndex, 1) Then bolgeaendert = True: Exit For
Next
If bolgeaendert Then
mailen
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
varArray = Worksheets(i).Range("A1:A50")
Cancel = True
End If
Next i
End If
End Sub


Private Sub Workbook_Open()
For i = 1 To Worksheets.Count
varArray = Worksheets("Tabelle(i)").Range("A1:A50")
Next i
End Sub

Hier ist das ganze Teil https://www.herber.de/bbs/user/6150.xls
Gruss
glen
Anzeige
AW: Und wie lautet die Fehlermeldung?
08.05.2004 22:45:55
Franz W
Hallo Glen,
ok! Es wird im 2. Makro angemahnt. Zwei Möglichkeiten:
1. Du schreibst die Zeile Dim i as Byte auch in zweite Makro unter die Zeile
Private_Sub...
2. Oder du schreibst die Zeile ganz oben unter die Zeile Option explicit. Dann gilt es für alle Makros in diesem Modul
Grüße
Franz
NOCH OFFEN: neue Helfer gesucht!
08.05.2004 22:52:01
Franz W.
JEtzt kommt ein Fehler im Makro in Zeile 9, und da kann ich leider nicht weiterhelfen
Beste grüße
Franz
AW: Und wie lautet die Fehlermeldung?
08.05.2004 22:53:52
Glen
Hallo Franz
die erste Möglichkeit habe ich bereits versucht. Ging nicht.
Das zweite versteh ich nicht ganz, dass ist doch schon so. Wenn ich das direkt unten dran schreibe, kommt da eine Trennlinie zwischenrein.
Gruss
Glen
Anzeige
AW: Und wie lautet die Fehlermeldung?
08.05.2004 23:13:31
Kay
Hallo Glen
1. varArray und varvergleichsArray sind ein und die selbe celle und diese vergleichst
du miteinander
2 varArray hast du auch nicht deklariert mit Dim
gruß
kay
AW: Und wie lautet die Fehlermeldung?
08.05.2004 23:40:16
Glen
Hallo Kay
Und das heisst, ich muss was ändern? habe nur Makrorekorder "Wissen"
Gruss
Glen
AW: Und wie lautet die Fehlermeldung?
08.05.2004 23:45:34
Kay
Hi Glen
kann mir nicht vorstellen was du vergleichen willst
Tabelle1 Spalte A mit Tabelle1 (2) Spalte A
was überhaupt passieren soll
Kay
AW: Und wie lautet die Fehlermeldung?
08.05.2004 23:50:06
Glen
Hallo Kay
In der Tabelle1 Spalt A wird geprüft ob ein eintrag gemacht wurde, wenn ja, geht nach dem sichern eine E-Mail an einen definierten Absender. Wenn ich die Tabelle kopiert habe (da Tabelle1 voll ist, soll das in Tabelle2 funktionieren.
Gruss
Glen
Anzeige
AW: Und wie lautet die Fehlermeldung?
09.05.2004 00:05:23
Kay
Hallo Glen
probiere das mal
ich habe leider kein Outlook (Outlook Express)
wenn ich jetzt die datei öffne kein fehler, dann ändere ich was und speichere ich,
will er outlook öffnen
Option Explicit
Public varArray As Variant

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim varvergleichsArray As Variant, lngIndex As Long, bolgeaendert As Boolean
Dim i As Byte
If Not SaveAsUI Then
For i = 1 To Worksheets.Count
varvergleichsArray = Worksheets("Tabelle1").Range("A2:A50")
For lngIndex = 2 To 50
If varvergleichsArray(lngIndex, 1) <> varArray(lngIndex, 1) Then bolgeaendert = True: Exit For
Next
If bolgeaendert Then
mailen
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
varArray = Worksheets(i).Range("A2:A50")
Cancel = True
End If
Next i
End If
End Sub


Private Sub Workbook_Open()
varArray = Worksheets("Tabelle1 (2)").Range("A2:A50")
End Sub

Kay
Anzeige
AW: Sorry Falsche Macro hier neu:
09.05.2004 00:18:39
Kay
Hi,
Entschuldige Bitte

Option Explicit
Public varArray As Variant

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim varvergleichsArray As Variant, lngIndex As Long, bolgeaendert As Boolean
Dim i As Byte
If Not SaveAsUI Then
For i = 1 To Worksheets.Count
varvergleichsArray = Worksheets(i).Range("A2:A50")
For lngIndex = 2 To 50
If varvergleichsArray(lngIndex, 1) <> varArray(lngIndex, 1) Then bolgeaendert = True: Exit For
Next
If bolgeaendert Then
mailen
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
varArray = Worksheets(i).Range("A2:A50")
Cancel = True
End If
Next i
End If
End Sub


Private Sub Workbook_Open()
Dim i
For i = 1 To Worksheets.Count
varArray = Worksheets(i).Range("A2:A50")
Next i
End Sub


mache gleich schluss
Melde dich Bitte wenn es klappt oder nicht
Gruß
Kay
Anzeige
AW: Sorry Falsche Macro hier neu:
09.05.2004 01:13:07
Glen
Hallo Kay
ich kann jetzt die Tabelle1 kopieren und die Funktion arbeitet auch in der kopierten Tabelle.
Super, das war es was ich brauchte. vielen Dank
Gruss
Glen
OT bitte Antworten lesen!!
09.05.2004 01:32:32
PeterW
Hallo Glen,
Martin Beck hatte dir um 22:36 genau diesen Ansatz gegeben - naja, Martin hätte einen sprechenden Variablennamen gefunden und i im zweiten Makro auch nicht als Variant dimensioniert.
Man fragt sich schon, warum man überhaupt noch antworten soll, wenn darauf nicht reagiert wird. :-(
Gruß
Peter
Danke Peter ...
09.05.2004 11:39:01
Martiun Beck
... ich hatte mich auch schon gewundert, warum keine Reaktion kam.
Gruß
Martin Beck
Anzeige
Ich auch.... o.t.
10.05.2004 08:01:55
Franz W.
public varArray ?
08.05.2004 22:23:49
NE
Hi Glen,
nur gelesen, nich probiert
public varArray

Private Sub Workbook_Open()
For i = 1 To Worksheets.Count
varArray = Worksheets("Tabelle(i)").Range("A1:A50")
Next i
End Sub

??
lg Nancy
AW: public varArray ?
08.05.2004 22:26:57
Glen
Hallo Nancy
Das war es leider nicht.
Trotzdem Danke.
Gruss
Glen
AW: Bekomme die Schleife nicht zum laufen
08.05.2004 22:23:35
Boris
Hi Glen,
lösch testweise einfach mal die Anweisung "Option Explicit".
Wenn der Code dann läuft, dann liegt es nur an der notwendigen Variablendeklaration - und der Fehler ist lokalisiert.
Option Explicit solltest du aber grundsätzlich setzen.
Grüße Boris
Anzeige
AW: Bekomme die Schleife nicht zum laufen
08.05.2004 22:27:15
NE
Hi Boris,
das in Zusammenhang mit OE hatte mich auch gewundert, you're right :-)
lg Nancy
AW: Bekomme die Schleife nicht zum laufen
08.05.2004 22:34:22
Glen
Hallo Boris
Habe das mal versucht, bin aber erfolglos geblieben.
Gruss
Glen
AW: Bekomme die Schleife nicht zum laufen
08.05.2004 22:36:27
Martin Beck
Hallo Glen,
wenn Du Option Explicit setzt, müssen alla Variablen korrekt deklariert werden. Nicht deklariert sind zumindest i (kommt in zwei Makros vor, das ist auch schlecht), varArray (müßte als Public und als Array deklariert werden. Die Deklaration von varvergleichsArray ist m.E. auch falsch (müßte als Array deklariert werden).
Außerdem ergibt die Zeile
varArray = Worksheets("Tabelle(i)").Range("A1:A50")
im Kontext des ersten Makros keinen Sinn, es müßte vermutlich
varArray = Worksheets(i).Range("A1:A50")
heißen.

Schau Dir mal die Hilfe zu Dim und Array an.
Gruß
Martin Beck
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige