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

Startproblem mit dem Modul

Startproblem mit dem Modul
29.07.2005 21:52:59
Matze
Hallo zusammen,
ich habe hier ein Teil eines Übernahmemoduls. Nach dem ersten Aufruf findet er die erste Kennnummer und kopiert den ersten gefundenen Wert, dann bleibt das Modul so lange "hängen" bis ich auf das Tabellenblatt klicke. Hat einer eine Idee, wo das Problem liegt? Nach dem klicken auf dem Tabellenblatt läuft das Modul fehlerfrei durch, bis es nach dem erneuten Aufruf an der gleichen Stelle "hängen" bleibt.
Danke für die Tipps und noch ein schönes Wochenende.
Matze
Sub Datenuebernahme(longDatumvon, strBlatt, longletzteZelleKurse) ' Uebernahme in Tabelle mit Kursen
Dim Import As Object
Dim strNameBlatt As Object
Set Import = Worksheets("Import")
Dim intKursimportvon As Integer, intAnzahlKurslinien As Integer, intSpalte As Integer, intSpaltenZuschlag As Integer
Dim Bildschirmtext As String, sWertpapier As String
Dim longZeile As Long

Bildschirmtext = "Bitte warten, übernehme die " & strBlatt & "-Kurse vom " & CDate(longDatumvon) & "."
' Application.ScreenUpdating = False
Select Case strBlatt
Case "Union"
Dim UnionKurse As Object
Set strNameBlatt = Worksheets("Union")
intSpaltenZuschlag = 2
intAnzahlKurslinien = Spalten_zaehlen("Union", 1)
Case "DWS"
Dim DWSKurse As Object
Set strNameBlatt = Worksheets("DWS")
intSpaltenZuschlag = 2
intAnzahlKurslinien = Spalten_zaehlen("DWS", 1)
Case "DIT"
' Dim DITKurse As Object
' Set strNameBlatt = Worksheets("DIT")
' intSpaltenZuschlag = 2
Case "Deka"
Dim DekaKurse As Object
Set strNameBlatt = Worksheets("Deka")
intSpaltenZuschlag = 3
intAnzahlKurslinien = Spalten_zaehlen("Deka", 1)
Case Else
' kein Else
End Select
Import.Visible = True
Import.Select
' bei Fehlern naechster Wert
On Error Resume Next
' Kursdaten uebernehmen
' Datum uebernehmen und lfd. Nummer ergaenzen
strNameBlatt.Select
strNameBlatt.Cells(longletzteZelleKurse, 1) = CLng(longDatumvon)
strNameBlatt.Cells(longletzteZelleKurse, 2) = CDate(longDatumvon)
' einlesen der Wertpapierkennnummer
For intKursimportvon = 3 To intAnzahlKurslinien
sWertpapier = strNameBlatt.Cells(1, intKursimportvon).Value
' nach der Wertpapierkennnummer suchen
Import.Select
Import.Cells.Find(What:=sWertpapier, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:= _
xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
' Ermittlung der Zelladresse
longZeile = ActiveCell.Row
intSpalte = ActiveCell.Column
' markieren des benoetigten Bereiches, kopieren und einfuegen in der Tabelle
Import.Cells(longZeile, intSpalte + intSpaltenZuschlag).Select
Selection.Copy
strNameBlatt.Select
' Werte in die Uebersicht uebernehmen
strNameBlatt.Cells(longletzteZelleKurse, intKursimportvon).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Next intKursimportvon

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wo bleibt das Makro hängen ? o.T.
29.07.2005 22:34:34
Ramses
...
AW: Wo bleibt das Makro hängen ? o.T.
29.07.2005 22:51:25
Matze
Hallo Ramses,
nach dem Copy-Befehl, der wird noch ausgeführt die Übernahme nicht.
mfg Matze
AW: Wo bleibt das Makro hängen ? o.T.
29.07.2005 23:01:28
Ramses
Hallo
kann ich mir nicht ganz vorstellen.
Wirf mal die "On Error Resume Next" Anweisung raus, und lass es dann mal laufen.
Kontrolliere dann den Inhalt von "StrNameBlatt"
Im Falle von "DIT"
Case "DIT"
' Dim DITKurse As Object
' Set strNameBlatt = Worksheets("DIT")
' intSpaltenZuschlag = 2
Erhält StrNameBlatt keinen Wert weil auskommentiert
Gruss Rainer
AW: Wo bleibt das Makro hängen ?
29.07.2005 23:39:48
Matze
Hallo Rainer,
das Modul dient für 4 verschiedene Importe, die alle nach dem gleichen Schema ablaufen. Das Import-Modul für den DIT ist noch nicht fertig und deshalb auskommentiert. Man kann ja immer nur eins machen ;-)). Wenn dieses Modul zu meiner vollsten Zufriedenheit arbeitet, ist dieser Teil das nächste.
DIT kann derzeit noch gar nicht übergeben werden, weil die Daten noch nicht hinterlegt sind.
mfg
Matze
Anzeige
AW: Startproblem mit dem Modul
29.07.2005 22:35:33
Berber
Hallo Matze,
folgende Fragen:
Import.Visible = True
'*****Warum wird das Sheet aufgerufen, es passiert nichts mit diesem Sheet,
'*****da als nächstes strNameBlatt.Select aufgerufen wird.
Import.Select
' bei Fehlern naechster Wert
On Error Resume Next
' Kursdaten uebernehmen
' Datum uebernehmen und lfd. Nummer ergaenzen
strNameBlatt.Select
'****warum wird zweimal der gleiche Wert in zwei Zellen eingelesen ?
strNameBlatt.Cells(longletzteZelleKurse, 1) = CLng(longDatumvon)
strNameBlatt.Cells(longletzteZelleKurse, 2) = CDate(longDatumvon)
Versuche die Select-Anweisungen zu vermeiden.
z.B. kannst Du die Zeilen:
strNameBlatt.Select
strNameBlatt.Cells(longletzteZelleKurse, 1) = CLng(longDatumvon)
mit dem Worksheets-Objekt bearbeiten ohne die Tabelle direkt zu aktivieren/selektieren :
Worksheets(strNameBlatt).cells(longletzteZelleKurse,1).value=CLng(longDatumvon)
Gruss
Berber
Anzeige
AW: Startproblem mit dem Modul
29.07.2005 22:49:29
Matze
Hallo Berber,
folgende Fragen:
Import.Visible = True
Das Blatt wird durch ein anderes Modul ausgeblendet.
'*****Warum wird das Sheet aufgerufen, es passiert nichts mit diesem Sheet,
'*****da als nächstes strNameBlatt.Select aufgerufen wird.
Import.Select
' bei Fehlern naechster Wert
On Error Resume Next
' Kursdaten uebernehmen
Danach geht die Schleife los, wo das Blatt angesprochen wird. auf dem Blatt Import sind die zu importierenden Daten reinkopiert worden.
Import.Cells.Find(What:=sWertpapier, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:= _
xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
...
' Datum uebernehmen und lfd. Nummer ergaenzen
strNameBlatt.Select
'****warum wird zweimal der gleiche Wert in zwei Zellen eingelesen ?
strNameBlatt.Cells(longletzteZelleKurse, 1) = CLng(longDatumvon)
strNameBlatt.Cells(longletzteZelleKurse, 2) = CDate(longDatumvon)
historisch bedingt, ist heute nicht mehr umbedingt notwendig
Versuche die Select-Anweisungen zu vermeiden.
z.B. kannst Du die Zeilen:
strNameBlatt.Select
strNameBlatt.Cells(longletzteZelleKurse, 1) = CLng(longDatumvon)
mit dem Worksheets-Objekt bearbeiten ohne die Tabelle direkt zu aktivieren/selektieren :
Worksheets(strNameBlatt).cells(longletzteZelleKurse,1).value=CLng(longDatumvon)
Werde es beherzigen und den Code entsprechend umstellen. Danke
Gruss
Matze
Anzeige
AW: Startproblem mit dem Modul
29.07.2005 23:45:23
Berber
Hallo,
die "Schleife beginnt erst später."
Vorher wird strNameBlatt.Select ausgeführt
Welche Werte geben lonzeile, intspalte und intspaltenzuschlag zurück?
Sind das alles Zahlenwerte und stimmen diese ?
übrigens: Es wird hier nur eine Zelle angesprochen.
Import.Cells(longZeile, intSpalte + intSpaltenZuschlag).Select
Gruss
Berber
AW: Startproblem mit dem Modul
30.07.2005 00:31:51
Matze
Hallo Berber,
dieses Modul ist Teil einer Wertpapierimport-Routine, die verschiedene tgl. Wertpapierkursdateien aufruft, in meine Datei reinkopiert und (in diesem Modul) die Kurse auf die entsprechenden Blätter übernimmt.
Das Import-Blatt ist wie folgt aufgebaut:
Spalte A Spalte B Spalte C Spalte D
WP-Name WpKNR Ausgabepreis Rücknahmepreis (den will ich haben)
Aufbau der verschiedenen Wertpapierblätter :
In der ersten Zeile stehen ab der Spalte C die Wertpapierkennnummern, die mich interessieren. In der Spalte A und B stehen die Datumswerte einmal als lfd. Zahl und als Datum im Textformat (diese Informationen werden u.a. für die automatische Diagrammerzeugung an anderer Stelle gebraucht).
Hier gehe ich in der ersten Zeile von der Spalte C bis bis zur letzten belegten Spalte durch, hole mir von dem Blatt die Wertpapierkennnummer
For intKursimportvon = 3 To intAnzahlKurslinien
sWertpapier = strNameBlatt.Cells(1, intKursimportvon).Value
' nach der Wertpapierkennnummer suchen
Import.Select
die ich hier der Suchfunktion übergebe, damit sie die Kennnummer auf dem Importblatt findet:
Import.Cells.Find(What:=sWertpapier, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:= _
xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
' Ermittlung der Zelladresse, die gefunden worden ist
longZeile = ActiveCell.Row
intSpalte = ActiveCell.Column
Da die Daten aber in der gleichen Zeile 2 Spalten weiter rechts sind, addiere ich über die Variable intSpaltenZuschlag den Wert 2 (wurde oben in der Select Case-Selection deklariert):
' markieren des benoetigten Bereiches, kopieren und einfuegen in der Tabelle
Import.Cells(longZeile, intSpalte + intSpaltenZuschlag).Select
Selection.Copy
strNameBlatt.Select
Hier springe ich auf das entsprechenden Blatt, wo die Daten entgültig abgelegt werden und füge die Daten ein:
strNameBlatt.Cells(longletzteZelleKurse, intKursimportvon).PasteSpecial Paste:=xlAll, Operation ..
Wie gesagt, dass Modul funktioniert absolut fehlerfrei, wenn es erst einmal läuft. Beim Aufruf dieses Moduls holt er sich die erste WpKNr vom entsprechenden Blatt, sucht und findet die WpKNr, springt die Zelle mit dem Rücknahmepreis an und kopiert die Zelle. Dann bleibt er "hängen". Wenn ich jetzt 1x die linke Maustaste drücke, läuft er sauber durch und übernimmt alle gewünschten Wertpapierkurse (absolut fehlerfrei).
Beim nächsten Aufruf dieses Moduls ist wieder das gleiche Spiel.
Die Module werden so lange aufgerufen, bis alle vorhandenen Kursdateien (egal von welchem Anbieter) importiert sind. Dies geschieht über das Auto_Open()-Modul, was die komplette Steuerung hat. Dafür werden die auch Datumswerte in den Spalten A und B gebraucht (Differenz zwischen letztem Wert und heutigem Datum). Genug verwirrt?
mfg Matze
Anzeige
AW: Startproblem mit dem Modul
31.07.2005 00:23:11
Berber
Diesen Bereich entfernen da er dann überflüssig:
Import.Cells(longZeile, intSpalte + intSpaltenZuschlag).Select
Selection.Copy
strNameBlatt.Select
Hier springe ich auf das entsprechenden Blatt, wo die Daten entgültig abgelegt werden und füge die Daten ein:
strNameBlatt.Cells(longletzteZelleKurse, intKursimportvon).PasteSpecial Paste:=xlAll, Operation ..
entferne "on error resume next" in Deinem Code
und teste welche Fehlermeldung Excel anzeigt.
Gruss
Berber

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige