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

Merkwürdiger fehler - makros kombinieren

Merkwürdiger fehler - makros kombinieren
16.08.2007 17:36:00
Rainer
guten abend zusammen
ich habe zwei makros in der selben prozedur. nun bin ich daran sie zusammenzuhängen.
dabei habe ich folgenden, sehr merkwürdigen fehler.
nun, um ganz vorne zu beginnen:
zuerst betätige ich dieses makro:

Sub test() 'dieses steht in modul 1
Call DBLager
Call UmsatzStrecke
End Sub


diese makros sehen so aus: 'stehen in modul 2
zuerst habe ich oben im Modul folgendes definiert
Dim wksQuelle As Worksheet
Dim wksZiel As Worksheet
Dim rngQuelle As Range
Dim lngZeile As Long
Dim lngAbZeile As Long
Dim lngBisZeile As Long
Dim lngSpalteZielA As Long
Dim wksQuelleSpalteAnfang As Long
Dim wksQuelleSpalteZiel As Long
Dim wbkQuelle As Workbook


Sub DBLager()
' subtrahiert spalte (A) mit (B) und gibt spalte C das Produkt wieder, falls werte Numerisch  _
sind. Es werden keine Formeln ausgewiesen
Dim iRowL As Integer, iRow As Integer
Dim SpalteEins As Integer
Dim SpalteZwei As Integer
Dim SpalteDrei As Integer
SpalteEins = 12 ' Spalte A
SpalteZwei = 13 ' Spalte B
SpalteDrei = 14 ' Spalte C AusgabeSpalte
iRowL = Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 1 To iRowL
If Application.Count(Range(Cells(iRow, 1), _
Cells(iRow, SpalteZwei))) > 0 And IsNumeric(Cells(iRow, SpalteZwei).Value) Then
Cells(iRow, SpalteDrei) = Cells(iRow, SpalteEins) - Cells(iRow, SpalteZwei)
End If
Next iRow
Range("A1").Select
End Sub


dies ist das darauffolgende Makro


Sub UmsatzStrecke()
lngSpalteZielA = 1 ' =A
lngAbZeile = 2
wksQuelleSpalteAnfang = 4
wksQuelleSpalteZiel = 7
' fragt ab ob file schon geöffnet ist
On Error Resume Next
Set wbkQuelle = Workbooks("SV_August_Strecke.xls")
On Error GoTo 0
If wksQuelle Is Nothing Then
Set wbkQuelle = Workbooks.Open("J:\FinanzControlling\Leitung\Kundenrentabilität\Projekt 2007\   _
_
_
Daten\Sales values\SV_August_Strecke.xls")
End If
Call allesInsZahlenformat
Set wksQuelle = Workbooks("SV_August_Strecke.xls").Worksheets("Tabelle1")
Set wksZiel = Workbooks("TOTAL_Kundenklassifikation_Test.xls").Worksheets("Kundenklassifikation" _
_
_
)
lngBisZeile = wksZiel.Cells(Rows.Count, lngSpalteZielA).End(xlUp).Row
'etc
'etc...
End Sub


nun zu meinem eigentlichen fall:
wenn ich nung Prozedur test() laufen lasse bleibt er mir hier stehen:
Set wksQuelle = Workbooks("SV_August_Strecke.xls").Worksheets("Tabelle1")
Aussage: "Laufzeitfehler '-2147352565 (800200b)
Es wurden keine daten zur analyse ausgewählt"
Das heisst, dass die erste Prozedur immer problemlos durchläuft. Dann wird er ja aufgefordert, das file SV_August_Strecke.xls zu öffnen. Dies ist aber NICHT geöffnet wenn ich diese Fehlermeldung kriegen.
Was mich aber am Meisten irritiert ist, dass wenn ich nach der Fehlermeldung oben auf "zurücksetzen" klicke und den curser in die Prozedur Test() setze und es nochmal laufen lasse, dann funktioniert es. (er öffnet auch das file). Sobald ich es nochmal mache. Das heisst. ich schliesse Das file SV_August_Strecke.xls wieder und möchte wie zubeginn das makro test starten. Erneut die gleiche meldung. nur nachdem ich im Debugger auf zurücksetzen drücke und es erneut starte geht es. Genau genommen geht die geschichte somit jedes 2. mal.
Zudem kann es auch nicht am Makro zuvor liegen. (das ich hier nicht abgebildet habe, denn dieses (allesInsZahlenformat) würde die Zellen des files SV_August_Strecke.xls in Zahlen umformen. Dies würd auch nicht durchgeführt. Das problem ist aber wie oben erwähnt, dass er dieses File gar nicht öffnet.
kann sich das jemand erklären?
Ich wäre sehr dankbar, wenn mir jemand helfen könnte.
ps: ich erwarte keine codeanpassungen. Ich dachte mir, dass ihr vielleicht aus eurer Erfahrung ja etwas mehr ahnung habt als ich und allenfalls etwas findet.
meine vba karriere ist nämlich erst 7 tage alt.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Merkwürdiger fehler - makros kombinieren
17.08.2007 05:30:00
fcs
Hallo Rainer,
Variablen, die am Anfang eines Moduls vor den Prozeduren deklariert werden müssen als Public oder Private deklariert werden, je nachdem ob du die entsprechenden Variablen-Werte auch in anderen Modulen verwenden möchtest (dann Public) oder nur innerhalb mehrere Prozeduren im Modul (dann Private). Dies hat möglicherweise auch mit deinem Fehler im Ablauf zu tun.
Etwas problematisch ist die Anweisung
On Error Resume Next
um bewusst den Fehler bei nicht geöffneter Datei zu überspringen. Dadurch werden ggf. weitere Fehler im Ablauf übersprungen bis es dann irgendwann zum Crash kommt. Besser ist es mit
On Error Goto Sprungadresse
zu arbeiten. Man erhält kann Hinweise auf den Fehler erzeugen und im Schrittmodus des Makros genau feststellen in welcher Code-Zeile das Makro in einen Fehler läuft.
Teste in einer Schleife positiv, ob eine bestimmte Datei shon geöffnet ist.
Wenn du eine Objektvariable deklariert hast, hier z.B. wbkQuelle, dann solltets du sie im Code dann auch konsequent verwenden. Es macht den Code übersichtlicher und pflegeleichter.
Ich hab deinen Code in der Prozedur "UmsatzStrecke" mal ensprechend obigen Anmerkungen angepasst.
in deiner Fassung ist wahrscheinlich das Problem in folgender Zeile der Prozedur "UmsatzStrecke":

If wksQuelle Is Nothing Then
dies müsste sein:
If wbkQuelle Is Nothing Then


Gruß
Franz


Public wksQuelle As Worksheet
Public wksZiel As Worksheet
Public rngQuelle As Range
Public lngZeile As Long
Public lngAbZeile As Long
Public lngBisZeile As Long
Public lngSpalteZielA As Long
Public wksQuelleSpalteAnfang As Long
Public wksQuelleSpalteZiel As Long
Public wbkQuelle As Workbook
Sub DBLager()
' subtrahiert spalte (A) mit (B) und gibt spalte C das Produkt wieder, falls werte Numerisch _
sind. Es werden keine Formeln ausgewiesen
Dim iRowL As Integer, iRow As Integer
Dim SpalteEins As Integer
Dim SpalteZwei As Integer
Dim SpalteDrei As Integer
SpalteEins = 12 ' Spalte A
SpalteZwei = 13 ' Spalte B
SpalteDrei = 14 ' Spalte C AusgabeSpalte
iRowL = Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 1 To iRowL
If Application.Count(Range(Cells(iRow, 1), _
Cells(iRow, SpalteZwei))) > 0 And IsNumeric(Cells(iRow, SpalteZwei).Value) Then
Cells(iRow, SpalteDrei) = Cells(iRow, SpalteEins) - Cells(iRow, SpalteZwei)
End If
Next iRow
Range("A1").Select
End Sub
Sub UmsatzStrecke()
lngSpalteZielA = 1 ' =A
lngAbZeile = 2
wksQuelleSpalteAnfang = 4
wksQuelleSpalteZiel = 7
On Error GoTo FehlerTest
' Prüfung, ob file schon geöffnet ist
For Each wbkQuelle In Application.Workbooks
If LCase(wbkQuelle.Name) = LCase("SV_August_Strecke.xls") Then Exit For
Next
If wbkQuelle Is Nothing Then
Set wbkQuelle = Workbooks.Open("J:\FinanzControlling\Leitung\Kundenrentabilität\Projekt  _
2007\Daten\Sales values\SV_August_Strecke.xls")
End If
Call allesInsZahlenformat
Set wksQuelle = wbkQuelle.Worksheets("Tabelle1")
Set wksZiel = Workbooks("TOTAL_Kundenklassifikation_Test.xls").Worksheets(" _
Kundenklassifikation")
lngBisZeile = wksZiel.Cells(Rows.Count, lngSpalteZielA).End(xlUp).Row
'etc
'etc...
Exit Sub
'Fehlermelde-/Aktionsabschnitt-Abschnitt
FehlerTest:
MsgBox "Fehler Nr " & VBA.Err.Number & vbLf & VBA.Err.Description & vbLf & vbLf _
& "ist aufgetreten!"
End Sub


Anzeige
AW: Merkwürdiger fehler - makros kombinieren
17.08.2007 09:26:00
Rainer
Guten Morgen Franz!
zuesrst mal ein herzliches dankeschöne für die Zeit die du aufgewendet hast um dich in mein problem reinzudenken und mir zu helfen.
ich habe den code reinkopiert es es funktioniert! er läuft jetzt immer durch.
Lustigerweise aber, bringt er, nachdem das makro fertig ist trotzdem noch die fehlermeldung. diesmal aber in der "selbsterstellten msg Box".
Darin sagt er: "FehlerNr 1004, Es wurden keine Daten zur Analyse markiert ausgewählt, ist aufgetreten!"
Ich habe zu testzwecken noch mehere Makros zusammengehängt (ic habe den selben Vorgang x-mal, es werden einfach andere Files gezogen). Und da kommt immer am schluss diese Meldung, sobald ich aber ok drücke (ander möglichkeit habe ich nicht) rechnet er trotzdem brav weiter.
Wie kriege ich nun noch diese Meldung weg? Es muss ja was mit dem neuen Text zutun haben:
.
.
.
Exit Sub
'Fehlermelde-/Aktionsabschnitt-Abschnitt
FehlerTest:
MsgBox "Fehler Nr " & VBA.Err.Number & vbLf & VBA.Err.Description & vbLf & vbLf _
& "ist aufgetreten!"
End Sub
nur, löschen möchte ich ihn ja nicht, da er mir falls sonst was nicht stimmt gute infos gibt.
viele grüsse
rainer
ps: danke auch noch für die anderen tips! :)

Anzeige
AW: Merkwürdiger fehler - makros kombinieren
17.08.2007 19:54:24
fcs
Hallo Rainer,
irgendwo muss deine Prozedur zum Schluss doch noch in eine Fehlersituation rauschen, ansonsten kommt die Fehler-Meldung nicht. Ich weiss aber nicht welche Methoden/Funktionen/Zustande den Fehler 1004 verursachen können.
Du kannst aber den Fehler 1004 zusätzlich abfangen und die Prozedur beenden.

Exit Sub
'Fehlermelde-/Aktionsabschnitt-Abschnitt
FehlerTest:
Select Case VBA.Err.Number
Case 1004
Exit Sub
Case Else
MsgBox "Fehler Nr " & VBA.Err.Number & vbLf & VBA.Err.Description & vbLf & vbLf _
& "ist aufgetreten!"
End Select
End Sub


Gruß
Franz

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige