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

Makroausführung

Makroausführung
20.05.2005 09:01:31
Thomas
Hallo da draußen, ich bitte um Hilfe bei Problemen mit der Makroausführung in Excel.
Ich habe 21 Dateien, aus denen ich Daten (gleichartige Größe und Struktur, aber je an anderer Stelle in der jeweiligen Tabelle)entnehmen und anders zusammenstellen muß. Das ganze periodisch mindestens halbjährlich, deshalb lieber automatisiert.
Das Makro habe ich fertig und es funktioniert, wenn ich es über Extras/Makro/ausführen aufrufe.
Den nächsten Schritt, mit dem die Kollegen dieses Makro per Knopfdruck (auf ein graphisches Steuerelement) auch anwenden können sollen, läßt VBA nicht zu. Jedesmal Fehlermeldungen.
Ich habe noch nicht herausbekommen, wo der Unterschied in der Ausführung liegt.
Hier mal ein Teil des funktionierenden Makros (ähnliche Wiederholung für jede der 21 zu öffnenden Dateien):
'1 Daten auswählen Datei1
' Datei aus dem Verzeichnis "r:\_statist\Test\" öffnen
ChDir "r:\_statist\Test\"
Application.CutCopyMode = False
Workbooks.Open Filename:="r:\_statist\Test\Datei1.htm"
Calculate
' Automatisches Heraussuchen der Datentabelle, Markierung und Kopie
' Gleiches Merkmal des gesuchten Bereiches ist in der Zelle darüber "(SUM)"
Cells.Find(What:="(SUM)", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
Selection.Offset(1, 0).Range("A1:d46").Select
Selection.Copy
'Daten in neue Tabelle eintragen
Windows("Basisdatei.xls").Activate
Sheets("Datei1").Select
Range("a1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Formatierung mit Tausenderpunkt
Selection.NumberFormat = "#,##0"
'Datenbereich sortieren
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Höhe und Breite anpassen
Columns("A:A").Select
Selection.ColumnWidth = 51
Selection.Rows.AutoFit
' Name vergeben
ActiveWorkbook.Names.Add Name:="Datei1", RefersToR1C1:="=Datei1!R1C1:R45C4"
' Tausenderwerte korrigieren
' Hier muß dann noch die Korrektur der Übertragungsfehler erfolgen.
' Hintergrund: Bei der Extraktion aus der .htm-Datei wurde der Tausenderpunkt
' mitgenommen und als Komma interpretiert. So wird er dann auch eingefügt, so
' daß statt der Tausenderzahl eine mit drei Stellen hinter dem Komma dasteht.
' Die Korrektur ist einfach: In den Übertragungstabellen werden die Nicht-Ganzen
' Zahlen gesucht und mit 1000 multipliziert. Damit ist auch die unterdrückte
' Null ganz rechts wieder da.
Dim rgn1, zelle1 As Range 'rgn(n) und zelle(n), da wiederholte Anwendung
Set rgn1 = Range("b2:d46")
For Each zelle1 In rgn1
If zelle1 Int(zelle1) Then
zelle1 = (zelle1 * 1000)
End If
Next
'Datei schließen
Windows("Datei1.htm").Activate
ActiveWindow.WindowState = xlNormal
ActiveWindow.Close
Hat jemand eine Idee, was VBA beim graphischen Steuerelement daran auszusetzen hat und wie ich das für die Anwendung des Buttons besser schreiben könnte (oder wo ich das herausbekommen könnte)?
Vielen Dank schon einmal für die Mühe
Thomas

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makroausführung
20.05.2005 09:20:30
Fritz
Hi Thomas,
Was für ein Fehler kommt denn? Lade mal eine Beispielmappe mit Makro hoch.
Fritz
AW: Makroausführung
20.05.2005 10:02:38
Thomas
Hallo Fritz,
Hoch- und Runterladen macht mein System hier nicht mit - schade.
Aber zu den Fehlermeldungen:
Darstellung:
- zunächst die Fehlermeldung, Nummer und Erläuterung von VBA
(betrifft: die Funktion im Makro, die per Steuerelement als Fehler ausgegeben wird)
(ohne Beanstandung als: die Form nach Bearbeitung, ohne Fehlerangabe)
- Laufzeitfehler "91": Objektvariable oder With-Blockvariable nicht festgelegt
(betrifft: Cells.Find ...)
(ohne Beanstandung als: ActiveSheet.Cells.Find ...)
- Laufzeitfehler "1004": Die SelectMethode des Rangeobjekts konnte nich ausgeführt werden
(betrifft: Range("a1").Select ...)
(ohne Beanstandung als: 'Range("a1").Select
ActiveSheet.Select ...)
- Laufzeitfehler "1004": Sortierbezug ungültig
(betrifft: Selection.Sort ...)
(ohne Beanstandung als: ActiveSheet.Selection.Sort ...)
- Laufzeitfehler "1004": Informationen können nicht eingefügt werden. ...
(betrifft: ActiveSheet.Paste ...)
(ohne Beanstandung als: ActiveSheet.Paste ...)
- Laufzeitfehler "438": Objekt unterstützt diese Eigenschaft oder Methode nicht
(betrifft: ActiveSheet.Selection.Sort ...)
(dann doch wieder ohne Beanstandung als: ActiveSheet.Selection.Sort ...)
- Laufzeitfehler "1004": Die SelectMethode des Rangeobjekts konnte nich ausgeführt werden
(betrifft: Columns("A:A").Select ...)
(dann doch wieder ohne Beanstandung als: Columns("A:A").Select ...)
- Laufzeitfehler "13": Typen unverträglich
(betrifft: If zelle1 ...)
Und da bin ich mit meinem Latein (VBA) am Ende ...
Gibt es noch eine Idee?
Danke
Thomas

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige