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

Variablendefinition

Variablendefinition
08.02.2008 10:25:57
KViertel
Hallo,
Ich habe wieder eine Verständnisfrage:
In meinen Hauptmodul habe ich eine Array-Variable mit "Public werte as object" deklariert.
Anschließend im Ausgangs SUB mit DIM werte(1 to 6, 1 to 70) dimensioniert. Aus dieser Sub dann eine Sub aufgerufen, in der Variablen werte Werte zugewiesen werden sollen. Hier bekomme ich dann den Laufzeitfehler 91 (Objekt sei nicht zugewiesen).
Warum? Public bedeutet doch in allen Subs sichtbar ? Ich hatte vor, Werte aus verschiedenen Tabellenblättern in dieses Array einzulesen und dieses Array dann in eine eigene Tabelle zu schreiben und auszuwerten. Es sind in der ersten Dimension 6 Tabellenblätter, mit max 70 Werten. Dabei wollte ich für jedes Tabellenblatt eine eigene Sub anlegen und dieses Array dann vervollständigen.
Kann mir da jemand helfen zu verstehen, was ich machen muss?
MfG. Klaus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablendefinition
08.02.2008 10:37:19
Rudi
Hallo,

Public werte as object


object ist schon mal falsch. Weißt du, was ein Object ist? Einem Array würde ich gar keinen Typ zuweisen.
Wenn du weiter in einer Sub Dim werte(1 to 6, 1 to 70) schreibst, gilt das nur für die Sub! Die Public-Variable wird davon nicht berührt.


Dabei wollte ich für jedes Tabellenblatt eine eigene Sub anlegen


Das ist höchstwahrscheinlich überflüssig.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Variablendefinition
08.02.2008 11:29:01
KViertel
Hallo Rudi,
danke für Deine Information. Das würde ja bedeuten, dass ich das Einlesen der Werte und die _ Ausgabe in eine Auswertungstabelle in einer

Sub abarbeiten muß. Im übrigen sitze ich im Moment fest. So sieht es jetzt aus. mit Main wird  _
gestartet. Im 

Sub Datensammeln werden die Werte eingelesen. Das Klappt.
Will ich aber den Wert wieder in eine Zelle schreiben, wird eine Objekt erwartet. Als Versuch  _
wurde dann test = eingesetzt, mit demselben Fehler. Ich verstehe nicht warum?
1. Modul
Public ws_t As Object
Public ws_e As Object
Public ws_q As Object
Public ws_d As Object
Public ws_r As Object
Public ws_db As Object
Public ws_dbadr As Object
Public dat1 As String
Public dat2 As String
Public dat3 As String
Public dat31 As String
Public dat4 As String
Public dat5 As String
Public dat6 As String
Public dat7 As String
Public t_werte


Sub main()
var_def
Daten_sammeln
End Sub


2.Modul


Sub var_def()
dat1 = "Titel"
dat2 = "Etablierung"
dat3 = "Qualifizierung"
dat4 = "Dimensionierung"
dat5 = "Reife"
dat6 = "DB"
dat7 = "DB_Adr"
wb_name = ActiveWorkbook.Name
Set ws_t = Workbooks(wb_name).Worksheets(dat1)
Set ws_e = Workbooks(wb_name).Worksheets(dat2)
Set ws_q = Workbooks(wb_name).Worksheets(dat3)
Set ws_d = Workbooks(wb_name).Worksheets(dat4)
Set ws_r = Workbooks(wb_name).Worksheets(dat5)
Set ws_db = Workbooks(wb_name).Worksheets(dat6)
Set ws_dbadr = Workbooks(wb_name).Worksheets(dat7)
End Sub



Sub Daten_sammeln()
Dim t_werte(1 To 5, 1 To 70)
Dim i As Integer
'Die Zell-Adressen werden aus der Tabelle ws_dbadr ausgelesen
ws_dbadr.Activate
drow = [A65536].End(xlUp).Row
ws_dbadr.Range(Cells(2, 1), Cells(drow, 1)).Select
i = 1
For Each n In Selection
t_werte(1, Val(i)) = ws_t.Range(n).Value
i = i + 1
Next
ws_db.Activate
drow = [A65536].End(xlUp).Row + 1
For i = 1 To 39
test = t_werte(1, i).Value 'Hier wird jetzt ein Objekt verlangt  LF 424
ws_db.Cells(drow, i).Value = t_werte(1, i).Value
Next
End Sub


MfG. Klaus

Anzeige
AW: Variablendefinition
08.02.2008 12:23:13
Rudi
Hallo,
ich weiß nicht, ob ich das richtig verstanden habe.

Sub Daten_sammeln()
Dim i As Integer, rngC As Range, iRow As Integer
Dim t_Werte
Dim wks() As String
Dim Dat(1 To 7) As String
Dat(1) = "Titel"
Dat(2) = "Etablierung"
Dat(3) = "Qualifizierung"
Dat(4) = "Dimensionierung"
Dat(5) = "Reife"
Dat(6) = "DB"
Dat(7) = "DB_Adr"
Set ws_dbadr = Worksheets(dat7)
Set ws_db = Worksheets(Dat6)
'Die Zell-Adressen werden aus der Tabelle ws_dbadr ausgelesen
With ws_dbadr
iRow = .Cells(65536, 1).End(xlUp).Row
ReDim Preserve t_Werte(1 To 5, 1 To iRow - 1)
For Each rngC In .Range(.Cells(2, 1), .Cells(iRow, 1))
For i = 1 To 5
t_Werte(i, rngC.Row - 1) = Worksheets(Dat(i)).Range(rngC.Value)
Next i
Next rngC
End With
With ws_db
iRow = .Cells(65536, 1).End(xlUp).Row + 1
.Range(.Cells(iRow, 1), .Cells(iRow + UBound(t_Werte, 2), 5)) = WorksheetFunction. _
Transpose(t_Werte)
End With
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Variablendefinition
08.02.2008 14:17:00
KViertel
Hallo Rudi,
danke für Deine Antwort. Da ich im Moment keine Zeit habe mich intensiver mit dem von Dir erstellten Code zubefassen, er mir nach dem Überfliegen jedoch sehr interessant scheint, werde ich es etwas später tun.
Im übrigen habe ich den Fehler gefunden. t_werte(1,i).value ist falsch nur t_werte(1,i).
MfG. Klaus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige