Anzeige
Archiv - Navigation
428to432
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
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

zellen auslesen und in array schreiben...

zellen auslesen und in array schreiben...
21.05.2004 13:58:18
loco
hallo,
habe da ein problem.
und zwar arbeite ich mit vba und excel.
ich schreibe meine werte die aus einem array ausgelesen werden in die excel tabelle, dies funktioniert auch.
aber das rausschreiben aus der excel tabelle in mein array funktioniert nicht.
mein code:

Option Explicit
Dim myArray As Variant
Dim neuArray As Variant
Dim EA As Excel.Application
Dim WB As Excel.Workbook
Dim my_tabelle As Excel.Worksheet 'Tabellenblatt
Dim my_chart As Excel.Chart 'Diagrammblatt

Private Sub Form_Initialize()
'Prüfen, ob Excel bereits ausgeführt wird:
On Error Resume Next
Set EA = CreateObject("Excel.Application")
Set WB = EA.Workbooks.Add   'Arbeitsmappe hinzufügen
Set my_tabelle = Form1.Controls("Chart1").object.Sheets(2)    'Tabellenblatt
Set my_chart = Form1.Controls("Chart1").object.Sheets(1) 'Diagrammblatt
zum rein schreiben in tabelle:
Public Sub diagramm()
xRow = 2
For i = LBound(myArray) To UBound(myArray)
my_tabelle.Cells(xRow, ((i) Mod 2) + 1) = CDbl(myArray(i))
xRow = xRow + i Mod 2
Next
End Sub

dieser funktioniert einwandfrei.

und zum auslesen:

Private Sub Speichern_Click()
neuArray = myArray
xRow = 2
For i = LBound(neuArray) To UBound(neuArray)
'IN DER NÄHSTEN ZEILE KOMMT ES IMMER ZUR FEHLER MELDUNG!!!
neuArray(i)= CDbl(my_tabelle.Cells(xRow, ((i) Mod 2) + 1))
xRow = xRow + i Mod 2
Next
End Sub


und es kommt zur fehler meldung:
objektvariable oder with-blockvariable nicht festgelegt!

kann mir da jemand den fehler sagen bzw. helfen?
damit es funktioniert.
habe schon so viel versucht und es klappt nicht.

loco

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zellen auslesen und in array schreiben...
21.05.2004 14:43:55
André Lö.
Hallo loco,
wieviele Zeilen liest denn Du in das Array ein? Ist das jedes Mal anders?
Bevor Du in das Array rein schreibst, musst die Dimensionen des Arrays festlegen.
Viele Grüße
André
AW: zellen auslesen und in array schreiben...
22.05.2004 00:30:45
loco
hallo,
das ist immer unterschiedlich wieviele werte ich habe.
was kann ich da tun?
da fällt mir ein, da es immer unterschiedlich ist mit der anzahl der werte, musste ich meine spalten beim formatieren z.B. ab zelle A2 bis zelle A50 (addition von zellen) formatieren, da ich nicht genau weiss wieviele es sind. und so sieht man in den eigentlich nicht gebrauchten zellen z.B. "0". kann man das irgendwie so formatieren bzw. programmieren das nur soviele zellen formatiert sind, wie die anzahl der werte?
mfg
loco
Anzeige
AW: zellen auslesen und in array schreiben...
22.05.2004 17:12:36
André Lö.
Hallo loco,
ich habe das jetzt gerade mal ausprobiert.
Hat es einen Grund, warum Du die Werte auf zwei Spalten auf dem Excel-Sheet verteilst? Wenn immer zwei Werte zusammen gehören, könntest Du die Werte doch auch in ein zweidimensionales Array schreiben und auch wieder von dort auslesen.
Aber nun zu dem anderen Problem:
Um heraus finden zu können, wieviele Werte Du hast, kannst Du z.B. bevor Du die Werte ins Array schreibst, Deine Datenreihe durchgehen und einen Zähler um eins erhöhen.
Folgender Code macht das z.B. für die Spalte 1.

Sub test()
Dim i, s As Integer
s = 1 '= spalte
With ActiveSheet
For i = 1 To .Cells(Rows.Count, s).End(xlUp).Row
If .Cells(i, s).Value <> "" Then counter = counter + 1
Next i
End With
MsgBox counter
End Sub

In Abhängigkeit von dem Wert der dann im Zähler steht, müsstest Du über die ReDim-Anweisung Dein Feld neu dimensionieren
ReDim neuArray(counter)
und dann erst das Array mit Deinen Daten füllen.
Bei dem anderen Problem mit den leeren Zellen und der Formel für Deine Addition, kannst Du mit der Wenn-Funktion arbeiten.
Folgende Formel in Zelle B3 geschrieben, wird nur etwas errechnen, wenn in A2 auch was drinnen steht.
=WENN(A2="";"";A2+A2)
Viele Grüße
André


Anzeige
AW: zellen auslesen und in array schreiben...
22.05.2004 18:46:25
loco
hallo,
also das mit den rausschreiben aus dee excel tabelle hat jetzt geklappt.
ich lese nur soviele raus wieviele ich rein schreibe, nur die werte können sich verändern.
aber dein vorschlag mit dem doppelten array ist glaube ich viel besser als meine lösung.
ausserdem speichert mein programm die neuen werte nicht ab, obwohl der compiler nicht meckert.
kannst du mal gucken was ich da falsch mache un d wie ich es besser machen könnte?
also was mein programm macht ist, aus der datei werte auslesen die nach einem "=" stehen ab zeile 2. dabei sind die geraden werte im array die xwerte und die ungeraden die y werte.und dann wieder meine neuen werte speichern in diese datei nach dem "=", ab zeile 2.
ich glaube mit dem doppelten array wäre es übersichtlicher, oder?
hier ein ausschnitt aus meiner ein/auslese datei:
.Auswahl250P3 :=9
250P3[1,0] :=0
250P3[1,1] :=0
250P3[2,0] :=10
250P3[2,1] :=20.93
250P3[3,0] :=50
250P3[3,1] :=20.93
250P3[4,0] :=60
250P3[4,1] :=16.16998
250P3[5,0] :=110
mein code zum auslesen der datei:
Public

Sub myWerte()
Dim myZeile As String
Dim dat As Integer
Dim FileName As String
Dim i As Integer
FileName = CommonDialog1.FileName
dat = FreeFile
Open FileName For Binary As dat
myZeile = Space(LOF(dat))
Get dat, 1, myZeile
Close dat
myZeile = myZeile & Chr(12)
'erste Zeile entfernen
myZeile = Mid(myZeile, InStr(1, myZeile, vbCr, 0) + 1)
'array erstellen
myArray = Split(myZeile, vbCr, -1, 0)
'nur alles was hinter dem = ist
For i = LBound(myArray) To UBound(myArray)
myArray(i) = Split(myArray(i), "=", -1, 1)(1)
Next i
End Sub

und zum rein schreiben(funktioniert nicht):
im neuArray stehen die neuen werte.


Sub ErsetzenUndSpeichern()
Dim Zahl As String
Dim dat As Integer
Dim i As Integer
Dim a As Variant
Dim FileName As String
'Datei
FileName = CommonDialog1.FileName
dat = FreeFile
Open FileName For Binary As dat
Zahl = Space(LOF(dat))
Get dat, 1, Zahl
Close dat
neuArray = Split(Zahl, vbCr, -1, 0)
For i = LBound(neuArray) + 1 To UBound(neuArray) 'ab 2. zeile
a = Split(neuArray(i), "=", -1, 0)
a(1) = myArray(i - 1)
neuArray(i) = Join(a, "=")
Next
Zahl = Join(neuArray, vbCr)
Kill FileName
dat = FreeFile
Open FileName For Binary As dat
Put dat, 1, Zahl
Close dat
End Sub

kannst du mir da helfen es besser zu machen und vorallem das die werte auch gespeichert werden?
danke
loco
Anzeige
AW: zellen auslesen und in array schreiben...
22.05.2004 19:04:45
André Lö.
Hallo loco,
ist Deine Datei so aufgebaut, wie in dem Beitrag

https://www.herber.de/forum/messages/431818.html
Wer oder was gibt denn solche Dateien aus?
Viele Grüße
André
AW: zellen auslesen und in array schreiben...
22.05.2004 21:50:03
André Lö.
Hallo loco,
wenn die Datei auch so aufgebaut ist, dann lässt sie sich mit dem
Makro in der Datei einlesen und auch wieder schreiben.
Bitte mal ausprobieren! Rückmeldung wäre schön.
https://www.herber.de/bbs/user/6630.xls

Die Datei https://www.herber.de/bbs/user/6631.txt wurde aus Datenschutzgründen gelöscht

Viele Grüße
André
Anzeige
AW: zellen auslesen und in array schreiben...
23.05.2004 04:02:59
loco
hallo,
ja so ungefähr sieht es aus.
kann das aber nicht starten um es auszuprobieren.
habe noch nie mit makros gearbeitet.
loco
AW: zellen auslesen und in array schreiben...
23.05.2004 05:50:40
André Lö.
Hallo loco,
Du brauchst doch nur auf die Button drücken und dann die Datei auswählen.
Viele Grüße
André

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige