PDA

Vollständige Version anzeigen : Laufzeitfehler 70 nach definieren der RowSource-Eigenschaft einer ListBox


Embee83
06.10.2010, 13:55
Hallo Forumenser,

bei mir tritt ein Fehler auf den ich mir nicht erklären kann, und nach langem suchen im Netz habe ich noch keine Lösung gefunden.

Ich habe eine ListBox die ich mit Hilfe eines Arrays über Textfelder in einer UserForm befülle. Funktioniert auch ganz einwandfrei. Nun wollte ich zur besseren Übericht Spaltenüberschriften in die ListBox einfügen. Das funktioniert über die RowSource-Eigenschaft. Soweit so gut. Starte ich jetzt jetzt jedoch die UserForm tritt die Fehlermeldung: "Laufzeitfehler 70: Zugriff verweigert" auf. Nehme ich die RowSource-Eigenschaft wieder heraus funktioniert wieder alles (aber natürlich ohne die Spaltenüberschriften in der ListBox).

Kann mir jemand sagen was ich verkehrt mache? Wie immer mein bisheriger Code:

Private Sub UserForm_Initialize()
Dim fArr() As String
'Dim AnzPrue As String
'AnzPrue = PAErstellen.AnzPrue.Text

ReDim fArr(0 To CInt(AnzPrue), 0 To 0)
For i = LBound(fArr) To UBound(fArr)
fArr(i, 0) = PAErstellen.PrueBez.Text & " " & i
Next i

'fArr um x Spalten erweitern
'für die Aufnahme der weiteren Daten
'Im Beispiel: 5 Spalten gesamt = 4 zusätzlich
'In diese (in der Listbox nicht sichtbaren) Spalten
'werden die Eingaben gespeichert
ReDim Preserve fArr(LBound(fArr) To UBound(fArr), 0 To 5)

'Array der Listbox zuweisen
Me.ListBox1.List = fArr
End Sub

Private Sub AuswPS_Change()
'Änderungen (jede Eingabe) der Textbox wird abgefangen
'un in das Datenfeld hinter dem Listenfeld eingetragen
'Diese Textbox ändert zum Beispiel die Spalte mit Index 1
With Me.ListBox1
If .ListIndex >= 0 Then _
.List(.ListIndex, 1) = Me.AuswPS
End With
End Sub



Private Sub statVorlast_Change()
'Änderungen (jede Eingabe) der Textbox wird abgefangen
'un in das Datenfeld hinter dem Listenfeld eingetragen
'Diese Textbox ändert zum Beispiel die Spalte mit Index 1
With Me.ListBox1
If .ListIndex >= 0 Then _
.List(.ListIndex, 2) = Me.statVorlast
End With
End Sub

Private Sub Amplitude_Change()
'Änderungen (jede Eingabe) der Textbox wird abgefangen
'un in das Datenfeld hinter dem Listenfeld eingetragen
'Diese Textbox ändert zum Beispiel die Spalte mit Index 1
With Me.ListBox1
If .ListIndex >= 0 Then _
.List(.ListIndex, 3) = Me.Amplitude
End With
End Sub


Private Sub Freq_Change()
'Änderungen (jede Eingabe) der Textbox wird abgefangen
'un in das Datenfeld hinter dem Listenfeld eingetragen
'Diese Textbox ändert zum Beispiel die Spalte mit Index 1
With Me.ListBox1
If .ListIndex >= 0 Then _
.List(.ListIndex, 4) = Me.Freq
End With
End Sub

Private Sub SOLLLw_Change()
'Änderungen (jede Eingabe) der Textbox wird abgefangen
'un in das Datenfeld hinter dem Listenfeld eingetragen
'Diese Textbox ändert zum Beispiel die Spalte mit Index 1
With Me.ListBox1
If .ListIndex >= 0 Then _
.List(.ListIndex, 5) = Me.SOLLLw
End With
End Sub

Private Sub UserForm_Terminate()

End Sub

Vielen Dank schonmal fürs Lesen

Gruß Embee83

chris-kaiser
06.10.2010, 14:16
Hallo Embee83

beides geht nicht!
entweder über eine Array füllen, oder über rowsource

Embee83
06.10.2010, 14:30
Hmmm, danke erstmal für den Hinweis.

Gibt es dann nicht eine Möglichkeit die Spaltenköpfe über VBA einzufügen. Bin leider noch nicht so fit um mir dort selbst eine Lösung zu basteln.

MFG

Embee83

chris-kaiser
06.10.2010, 14:38
hi

siehe

http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0423.shtml

ob sich das lohnt ^^
du müsstest dein Array wo hinschreiben das in die Liste aufnehmen und danach wieder löschen........

füge diese einfach über der Listbox als Labels ein
wäre eine ganz einfache Lösung.

Embee83
06.10.2010, 15:37
Oh man da liegt die einfachste Lösung mal wieder da wo man nicht hinguckt :) Klappt einwandfrei so ;)

Vielen dank

Embee83