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

Brauche dringend Hilfe

Brauche dringend Hilfe
16.02.2007 20:54:40
Sophie
Hallo zusammen,
weiß langsam nicht mehr weiter. Programm funktioniert teilweise, dann wieder nicht.
Kurz zum Programm. Öffne verschiedene Excel-Mappen und kopiere mir die Tabellenblätter heraus, wie folgt:
Option Explicit
'Daten_Auslesen wird von einer Userform aus aufgerufen und bekommt auch die Infos übergeben

Sub Daten_Auslesen(JahrAnfang As Integer, JahrEnde As Integer)
Dim Jahr As Integer
Dim Monat As Byte, Lauf As Byte
Dim strPfad As String
Dim strDateiname As String
Dim strDatKomplNamen As String
Dim j As Long, k As Long, i As Long
On Error Resume Next
strDatKomplNamen = ActiveWorkbook.FullName
strDateiname = ActiveWorkbook.Name
Jahr = Year(Date)
j = 1
For Jahr = JahrAnfang To JahrEnde
'wenn einzulesendes Jahr = aktuelles Jahr, dann einzulesende Monate auf aktuellen Monat einschränken
If Jahr = Year(Date) Then
Lauf = Month(Date)
Else
Lauf = 12
End If
strPfad = Left(strDatKomplNamen, InStr(1, strDatKomplNamen, "Jahr") + 3) & Jahr & Mid(strDatKomplNamen, InStr(1, strDatKomplNamen, "Jahr") + 8, InStr(1, strDatKomplNamen, strDateiname) - (InStr(1, strDatKomplNamen, "Jahr") + 8)) & strDateiname
Workbooks.Open Filename:= _
strPfad, ReadOnly:=True
For i = 1 To Lauf
'wenn im Tabellenblatt Eintragungen vorhanden dann...
If ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("J1") <> "" Then
'hier ist mein Problem...............................................
'auf ActiveWorkbook.Sheets("Ausw.-Monat " & i)....erfolgt keine Reaktion, kopiert ins Leere
'Doppelbereich einfassen, A1:IV5 immer gleich, der Rest variabel muß immer einzeln bestimmt werden
ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("A1:IV5, A" & Range("A1").End(xlDown).Row & ":IV" & Range("A65536").End(xlUp).Row + 1).Copy
'absichern, daß die letzte Zeile keine verbundene Zeile ist, wenn ja dann Endbereich erweitern
If Err.Number = 1004 Then ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("A1:IV5, A" & Range("A1").End(xlDown).Row & ":IV" & Range("A65536").End(xlUp).Row + 2).Copy
'hier werden die Daten eingefügt
Workbooks("Auswertesoftware.xls").Sheets("Tabelle1").Range("A" & j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'nur Hilfsinfo, immer wenn ein neuer Block eingelesen wird
Workbooks("Auswertesoftware.xls").Sheets("Tabelle1").Range("A" & j) = "First"
'Einfügebereich hochzählen, damit nichts überschrieben wird
j = j + (ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("A65536").End(xlUp).Row) - (ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("A1").End(xlDown).Row) + 7
End If
Next i
Application.CutCopyMode = False
'hier habe ich früher ActiveWindow.Close gehabt, dann kam es vor, daß mein Hauptprogramm "Auswertesoftware" geschlossen wurde
Windows(strDateiname).Close
Next Jahr
End Sub

Mit der Anweisung ActiveWorkbook.Sheets("Ausw.-Monat " & i) kommt es immer wieder vor, daß zwar die richtige Arbeitsmappe active ist, aber das Tabellenblatt nicht angewählt und auch kein Bereich eingefasst wird, und somit einfach beim Einfügen ein Leerer Bereich eingefügt wird.
Hoffentlich kann mir einer von Euch weiterhelfen, ist schon langsam zum Verzweifeln.
Hab es auch schon somal versucht anstatt ActiveWorkbook Workbooks(strDateiname).Sheets...funktionierte ebenfalls nicht.
Schönen Gruß
Sophie

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Brauche dringend Hilfe
16.02.2007 21:02:00
EtoPHG
Hallo Sophie,
Kommentier doch mal die Zeile
On Error Resume Next
und lass es laufen. Ziemlich sicher erhälts Du einen Index-Fehler ? Sag uns die Fehlermeldung! Gruss Hansueli
AW: Brauche dringend Hilfe
16.02.2007 21:22:49
Sophie
Hallo Hansueli,
kann dieses leider erst Montag ausprobieren, habe zwar das Programm hier, allerdings auf die einzelnen Arbeitsmappen kann ich nicht zugreifen, diese stehen bei mir in der Arbeit im Netz.
Was ist Dein Tipp woran es liegt, was meinst Du mit einem Index-Fehler?
Schönen Gruß
Sophie
AW: Brauche dringend Hilfe
16.02.2007 22:06:00
EtoPHG
Hallo Sophie,
Na ja, an dem Punkt, wo Du schreibst, dass Probleme sind, werden Sheets mit konstruierten Namen angesprochen. Da oben eine RESUME NEXT steht, passiert überhaupt nichts, wenn der Blattname nicht exiistiert. Ohne die Error-Anweisung sähe man einen Fehler, bzw. könnte ihn mit einem Error-Handler abfangen. Ich finde es sowieso seltsam, dass nachher aif eine Err.Number geprüft wird. Wo wird denn die Error-Number zurückgesetzt ?
Vielleicht würde es helfen, wenn Du mal die Error-Handler Beispiele aus dem VBA-Help anschaust!
Da Du das nicht testen kannst, was/wie erwartest Du, dass das die Helfer hier können ?
Gruss Hansueli
Anzeige
AW: Brauche dringend Hilfe
16.02.2007 22:48:00
Sophie
Hallo Hansueli,
erstmal vielen Dank für Deine Antwort.
Erstmal auf Deine Fragen eine kurze Antwort:
Ich finde es sowieso seltsam, dass nachher aif eine Err.Number geprüft wird... es kommt ab und zu vor, daß der angegebene zu kopierende Endbereich eine Verbindung zur nachfolgenden Zelle hat, dann bekam ich immer eine Fehlermeldung, daß verbundene Zellen... die Fehlermeldung war eben die 1004, also dachte ich mir ich frage nach dem Einfassen des zu kopierenden Bereichs einfach die Fehlernummer ab, wenn diese vorliegt erweitere ich den Endbereich um eine Zelle. Daß ich den Err.Number zurücksetzen muß, habe ich ehrlich gesagt gar nicht bedacht, somit liegt dieser nach dem erstenmal wahrscheinlich immer vor. Setzte ich ihn einfach mit Err.Number=0 zurück oder?
Da Du das nicht testen kannst, was/wie erwartest Du, dass das die Helfer hier können ? Hatte gedacht, daß irgendein grundlegendes Problem vielleicht darliegt, wo man vielleicht gleich erkennen kann, daß dieses nicht funktioniert.
Vielleicht würde es helfen, wenn Du mal die Error-Handler Beispiele aus dem VBA-Help anschaust!
Würde ich gerne, aber wie komme ich da hin, oder meinst Du die Recherche?
Schönen Gruß
Sophie
Anzeige
AW: Brauche dringend Hilfe
16.02.2007 22:58:15
EtoPHG
Hallo Sophie,
Würde ich gerne, aber wie komme ich da hin...
Also, ich hab ein englisches Excel (Anm. wegen dem folgenden Beispiel) aber auch bei Deinem müsste es so funktionieren: Du gehst mit dem Cursor im VBA-Editor auf Deine Zeile <b> If Err.Number </b> <u>in</u> das Wort Err und drückst F1. Bei mir kommt dann:
Err Object Example
This example uses the properties of the Err object in constructing an error-message dialog box.
Note that if you use the Clear method first, when you generate a Visual Basic error with the Raise method,
Visual Basic's default values become the properties of the Err object.
Dim Msg
' If an error occurs, construct an error message
On Error Resume Next    ' Defer error handling.
Err.Clear
Err.Raise 6    ' Generate an "Overflow" error.
' Check for error, then show message.
If Err.Number <> 0 Then
Msg = "Error # " & Str(Err.Number) & " was generated by " _
& Err.Source & Chr(13) & Err.Description
MsgBox Msg, , "Error", Err.Helpfile, Err.HelpContext
End If

Da siehst Du auch, dass man einen Fehler mit
Err.Clear
zurücksetzt und nicht mit Err.Number = 0. Gruss Hansueli
Anzeige
AW: Brauche dringend Hilfe
16.02.2007 23:12:14
Sophie
Hallo Hansueli,
vielen Dank für Deine Hilfe.
Manchmal sieht man den Wald vor lauter Bäumen nicht.
Im nachhinein ist mir völlig klar wo die VBA-Hilfe steckt, irgendwie war ich aufs Forum fixiert und suchte hier.
Gruß
Sophie

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige