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

Array aus anderen Datenblatt einlesen die 2.

Array aus anderen Datenblatt einlesen die 2.
23.08.2002 16:29:29
Manuela
Hallo Leute nochmal,

leider funktionieren die bisher vorgeschlagenen Änderungen auch nicht.
Der Code öffnet zwar das neue Datenblatt und setzt den Cursor auf A1, springt danach aber sofort wieder in das erste Datenblatt und zählt dort die Zellen in ein Array.
Kann nochmal jemand helfen ;-) ?

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False
DocumentName = ThisWorkbook.Path
Workbooks.Open Filename:=DocumentName + "\Patientenstammdateien\DRG-Daten02.xls"
Workbooks("Daten.xls").Sheets(1).Activate
ActiveWorkbook.Sheets(1).Range("A1").Select
aeins = Cells(Rows.Count, 1).End(xlUp).Row
links = 2
hilfe = aeins
ReDim arreins(aeins)
For spalteeins = links To aeins
arreins(K) = Cells(spalteeins, 1).Value
Cells(spalteeins, 6) = arreins(K)
K = K + 1
Next spalteeins
ActiveWorkbook.Close
Application.ScreenUpdating = True

End Sub

Workbooks("Daten.xls").Sheets(1).Activate
ActiveWorkbook.Sheets(1).Range("A1").Select

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

Betreff
Datum
Anwender
Anzeige
Re: Array aus anderen Datenblatt einlesen die 2.
23.08.2002 16:56:06
Axel
Hallo,

Dein Code ist etwas chaotisch. Es ist guter Stil (und oftmals leider auch notwendig) mit "Option Explicit" zu arbeiten.

Dadurch wirst Du gezwungen, Variablen zu deklarieren. Das hilft nicht nur Fehler zu vermeiden, sondern erleichtert anderen den Code besser zu durchschauen.

Dies nur als Tip ;))

Das Du da Daten aus der aufrufenden Mappe bearbeitest sollte Dich eigentlich nicht wundern.

Über open() öffnest Du die Patientenstammdatei. Diese wird dadurch automatisch zur aktiven Mappe!

Dann aktivierst Du die Mappe "Daten.xls". Mit dem nächsten Statement selektierst (oder aktivierst) Du dann die Zelle "A1" in eben dieser Mappe.

Der weitere Code operiert dann ausschließlich in "Daten.xls"

Nimm die Anweisung

Workbooks("Daten.xls").Sheets(1).Activate

heraus.

Was dann da weiter passieren soll, habe ich jetzt aber nicht analysiert.

Gruß
Axel

Anzeige
Re: Array aus anderen Datenblatt einlesen die 2.
23.08.2002 17:11:51
Manuela
Hallo Axel,

kannst Du mir Deine Vorschläge in Code übersetzen?

Gruß Manu

Re: Array aus anderen Datenblatt einlesen die 2.
23.08.2002 17:16:07
Axel
Hallo,

wie funktioniert der Code denn, wenn Du die betreffende Zeile herausnimmst?

Kommentiere die ScreenUpdating Anweisungen aus und gehe den Programmcode dann im Debugger Schritt für Schritt durch.

Dann siehst Du sofort wo etwas schief läuft.

Gruß
Axel

Re: Array aus anderen Datenblatt einlesen die 2.
23.08.2002 17:26:21
Mnuela
Hallo Axel,

ich habe das jetzt mal auskommentiert.
Über F8 läuft das folgendermaßen:
Nachdem sich mit Workbooks.open ... die Datei geöffnet hat, setzt er den Cursor auf A1 in der geöffneten Datei, soll er ja auch.
Die Datei bleibt auf, er zählt aber die Zellen in der Ausgangsmappe. Ich verstehe das einfach nicht. Eigentlich müßte er ja anfangen, in der neuen Mappe zu zählen.

Anzeige
Re: Array aus anderen Datenblatt einlesen die 2.
23.08.2002 17:40:29
Axel
Hallo,

ich muß leider nochmal wiederholen, daß Dein Code absolut chaotisch ist.

Du benutzt da z.B. eine Variable spalteeins, die dann in den cells()-Anweisungen als Zeilenindex verwendet wird. Nomen est Omen!

Der Variablen hilfe wird ein Wert zugewiesen und diese dann überhaupt nicht verwendet.

Und wofür überhaupt das Array arreins(). Du kannst die Übertragung der Daten von Spalte 1 in Spalte 6 doch direkt vornehmen. Außerdem bräuchte man dazu auch nicht die Schleife, und und ...

Und trotzdem! Eigentlich sollten die Daten in der Patientenstammdatei bearbeitet werden.

Hast Du wirklich den kompletten Code gepostet? Oder vielleicht irgendetwas unterschlagen?

Gruß
Axel

Anzeige
Re: Array aus anderen Datenblatt einlesen die 2.
24.08.2002 01:25:58
Charlie
Hallo Manuela,
ich möchte mich einleitend den Ratschlägen von Axel anschließen. Zwing Dich, die Variablen zu deklarieren, indem Du im VBA-Editor im Menü "Extras" - "Optionen" - Register "Editor" die Option "Variablendeklaration erforderlich" aktivierst. Dadurch setzt Excel automatisch in jedes Modul in die 1. Zeile "Option Explicit".

Die Variablen solltest Du a) so benennen, dass Du auch später, wenn Du vielleicht nach Monaten den Code wieder bearbeiten musst, selbst leicht nachvollziehen kannst, welche Bedeutung die Variable wirklich hat (siehe auch Hinweis von Axel). Eine Variable mit irgendwas "..spalte" zu benennen und eigentlich Zeilen zu meinen, ist verwirrend. Bei der Deklaration der Variablen solltest Du auch die sog. Präfixes verwenden, die Dir - ohne dass Du auf die Deklaration schauen musst - im Code Aufschluss gibt, welcher Wert sich darin befindet bzw. befinden kann. So kannst Du falsche Wertzuweisungen leicht erkennen. Schau dazu einmal in die xlBasics von H.W. Herber (Downloadbereich).

Dass in Deinem Code nicht die Werte der geöffneten Datei in das Array eingelesen werden, liegt daran, dass die Referenzierung von Cells(...) falsch ist. So wie Du sie gesetzt hast, bezieht sie sich auf das aktive Blatt in der aktuellen Mappe. Ein Verweis auf ein nicht aktives Blatt oder eine andere Mappe braucht immer 1) ein genaues Ansprechen des "anderen" Blatts bzw. der "anderen" Datei und 2) den Verweis von Range oder Cells auf diese(s) Blatt/Datei durch Vorsetzen eines Punkts:
.Range(...) bzw. .Cells(...).

Wenn ich jetzt Deinen Code so interpretiere, dass Werte aus der zu öffnenden Datei in die aktuelle Datei (die den Code enthält) importiert werden sollen, dann gibt es mehrere Möglichkeiten: Deine viel zu umständliche Variante über ein Array oder Du machst es auf dem direkten Weg (siehe 2. Beispiel):

Ui, das war jetzt schön lang, aber ich hoffe, dass ich Dir die Fehler verständlich aufzeigen konnte.

Viel Erfolg,
Charlie

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige