Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1020to1024
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
Inhaltsverzeichnis

Redim Preserve klappt nicht

Redim Preserve klappt nicht
04.11.2008 12:23:00
chris
Hallo noch einmal,
ich muss heute noch einmal um Hilfe bitten.
habe ein Makro in dem ich in ein Array werte schreibe.
Dieses Makro lasse ich beim Start dimensionieren.(um es nicht in jedem durchlauf erneut dimensionieren lassen muss.
Und am Ende wollte ich einen Redim Preserve machen aber es kommt immer ein Fehler ?
Darum bitte ich um Hilfe was mache ich Falsch ?
Hier ein teil meines Codes
With Datendatei.Worksheets(gew_sheet)
iRows = .Cells(Rows.Count, z).End(xlUp).Row
ReDim inNr(iRows, 1)
For X = 21 To iRows
If .Cells(X, z).Value > 0 Then
ii = ii + 1
inNr(ii, 0) = .Cells(X, z - 2).Value 'werte1
inNr(ii, 1) = .Cells(X, 1).Value 'werte2
End If
Next X
End With
' ReDim Preserve inNr(1, ii)
End If
'Userform ausblenden
'frm_Auswertung.Hide
'Ausgabe der Daten in Listbox auf Userform
frm_Auswertung.lb_fehlerhafte.Clear
Hier kommt der Fehler(Laufzeitfehler 9 Index auserhalb des gültigen Bereichs.
ReDim Preserve inNr(ii, 1)
vielen Dank für eure Hilfe noch einmal !

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Redim Preserve klappt nicht
04.11.2008 12:25:06
Hajo_Zi
Hallo Chris,
ich vermute das Array, darf zu Beginn nicht mit einer Dimension belegt sein.

AW: Redim Preserve klappt nicht
04.11.2008 12:33:07
Beverly
Hi Chris,
in einem mehrdimensionalen Array muss immer der letzte Parameter redimensioniert werden. Versuche es mal nach diesem Prinzip:

ReDim Preserve inNr(0 to 1, 0 to ii)
inNr(0, ii) = .Cells(X, z - 2).Value 'werte1
inNr(1, ii) = .Cells(X, 1).Value 'werte2




AW: Redim Preserve klappt nicht
04.11.2008 13:10:00
chris
Hallo Beverly, dein Versuch klappt nicht.
Hajo deine version aber auch nicht.
Es kommt dann immer gleich beim zuweisen der fehler.
Typen unverträglich
Laufzeitfehler 13
Habe jetzt angegeben nach meinen
sub blabla()
dim inNr
Irgendwas mache ich falsch... ?
Bitte um Hilfe noch einmal
Anzeige
AW: Redim Preserve klappt nicht
04.11.2008 13:15:29
Hajo_Zi
Hallo Chris,
hast Du mit redim die Größe festgelegt vor dem ersten beschreiben? Das Array hat ja noch keine Größe.
Gruß Hajo
AW: Redim Preserve klappt nicht
04.11.2008 13:24:27
chris
ja aber du hast doch gesagt das ich kein Dim vorher angeben darf? Sorry jetzt blick ich nicht mehr durch:)
Hier noch einmal mein kompletter Code.

Sub hole_daten()
Dim z As Integer 'Zähler für Schleife
Dim X As Integer 'Zähler für Schleife
Dim ii As Integer 'Zähler für Anzahl Werte in Array
Dim iRows
Dim gew_sheet
On Error Resume Next
If frm_Auswertung.opt_erst.Value = True Then gew_sheet = "erster"
If frm_Auswertung.opt_letzt.Value = True Then gew_sheet = "letzter"
' Spalte finden in der die benötigten Werte stehen(ob prüfung i.o oder nicht)
z = Application.Match("0 = i.O.", Datendatei.Worksheets(gew_sheet).Rows(19), 0)
On Error GoTo 0
If IsError(z) Or z = 0 Then
MsgBox ("Keine Gültige Datei gewählt - Bitte eine andere Datei wählen"), vbCritical, " _
abbruch"
Datendatei.Close False
Exit Sub
Else
ii = -1
With Datendatei.Worksheets(gew_sheet)
iRows = .Cells(Rows.Count, z).End(xlUp).Row
ReDim inNr(iRows, 1)
'ReDim Dat_inNr(iRows)
For X = 21 To iRows
If .Cells(X, z).Value > 0 Then
ii = ii + 1
inNr(ii, 0) = .Cells(X, z - 2).Value
inNr(ii, 1) = .Cells(X, 1).Value
'Dat_inNr(ii) = .Cells(X, z - 2)
End If
Next X
End With
End If
'Userform ausblenden
'frm_Auswertung.Hide
ThisWorkbook.Sheets("Daten").Cells.Delete
ThisWorkbook.Sheets("Daten").Columns(1).NumberFormat = "@"
'Ausgabe der Daten in Listbox auf Userform
frm_Auswertung.lb_fehlerhafte.Clear
'------------------------------------- HIER KOMMT DER FEHLER (Laufzeitfehler 9) ---------------- _
ReDim Preserve inNr(ii, 1)
frm_Auswertung.lb_fehlerhafte.List = inNr 'WorksheetFunction.Transpose(inNr) 'gefundene  _
Injektoren in Listbox eintragen
frm_Auswertung.lbl_stk.Caption = frm_Auswertung.lb_fehlerhafte.ListCount 'Anzahl gefundener  _
Injektoren auf Label anzeigen
'Ausgabe der Daten in Tabellenblatt Daten in dieser Datei
'ThisWorkbook.Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Offset(0, 0).Resize(ii, 1) =  _
WorksheetFunction.Transpose(inNr)
Datendatei.Close False
End Sub


Danke noch einmal vielmals für deine Hilfe !!!
gruß Chris

Anzeige
AW: Redim Preserve klappt nicht
04.11.2008 13:34:10
Hajo_Zi
Hallo Chris,
ich habe mir den Code jetzt nicht angesehen.
Ich hatte geschrieben keine Dimensionierung bei Dim, vor der ersten Verwendung muss eine Dimension mit Redim zugewiesen werden.
Gruß Hajo
AW: Redim Preserve klappt nicht
04.11.2008 13:46:00
chris
Hallo Hajo,
ich verstehe das nicht.?
"Ich hatte geschrieben keine Dimensionierung bei Dim"
habe ich doch nicht oder ?
Ich habe nur ReDim inNr(iRows, 1)
so wie du es geschrieben hast ?
AW: Redim Preserve klappt nicht
04.11.2008 13:50:00
Hajo_Zi
Hallo Chris,
ich wollte es vermeiden meine Datei mit Deinem Code zu belasten, jetzt habe ich es aber gemacht und Stele fest ich muss erstnoch ewig Zeit in den Code und das drumherrum Investieren um den Code zum laufen zu bringen. Die Zeit investiere ich nicht.
Gruß Hajo
Anzeige
AW: Redim Preserve
04.11.2008 13:52:27
Beverly
Hi Chris,
ich sehe nicht, wie dein Code jetzt aussieht und kann deshalb nicht sagen, weshalb es bei dir nicht funktioniert. Schau dir einfach mal das Beispiel Drucken ohne Farbe auf meiner HP, Seite "Beispiele m. VBA"an, da verwende ich dieses Prinzip.


AW: Redim Preserve
04.11.2008 14:19:34
chris
Danke euch beiden für eure Hilfe.
habe mit Hilfe der suche gefunden was ich gesucht habe.
Bei einem mehrdimensionalem Array kann ich mit redim preserve nur den hinteren Teil verändern.
Danke
Anzeige
AW: Redim Preserve
04.11.2008 14:34:00
Hajo_Zi
Hallo Chris,
da brauchtest Du bestimmt nicht lange suchen, Karin hatte es ja gerade in diesem Thread geschrieben.
Gruß Hajo
AW: Redim Preserve
04.11.2008 14:45:00
Tino
Hallo,
soweit ich weis, kannst du nur den rechten Bereich der Area neu Dimensionieren,
ohne dass Deine restlichen Daten verloren gehen.
Siehe auch hier:
http://support.microsoft.com/kb/75517/de
Beispiel, Area wird neu Dimensioniert Daten gehen verloren.
'letzter Eintrag bleibt erhalten, 
'da die Area nicht mehr neu Dimensioniert wird 
Sub Test2()
Dim meArea()
Dim a As Integer

For a = 0 To 10
 Redim meArea(a, 0)
 meArea(a, 0) = "Hallo" & a
Next a

For a = 0 To 10
 Debug.Print meArea(a, 0)
Next a

End Sub


Mit dem Zusatz Preserve, kann nur der rechte Bereich der Area vergrößert werden.

'hier wird der rechte Bereich der Area neu Dimentioniert 
'Daten bleiben erhalten 
Sub Test1()
Dim meArea()
Dim a As Integer

For a = 0 To 10
 Redim Preserve meArea(0, a)
 meArea(0, a) = "Hallo" & a
Next a

For a = 0 To 10
 Debug.Print meArea(0, a)
Next a

End Sub


Gruß Tino

Anzeige
AW: Redim Preserve
05.11.2008 07:26:58
chris
Danke !

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige