Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
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

Aufruf klassensubroutine

Aufruf klassensubroutine
25.06.2016 23:20:35
beebelbrox

Hallo liebe Forengemeinde :)
Ich Versuch grad meine ersten richtigen schritte mit VBA. Ich würd mich zwar als passablen Programmierer beschreiben, habe jedoch recht große Probleme mich in die Logik von VBA reinzudenken. Da ich sehr stark durch objektorientierte sprachen geprägt bin, wollte ich diesen Ansatz auch mit VBA verfolgen.
Mein konkretes Problem besteht darin eine Instanz einer selbst erstellten Klasse zu erzeugen.
Ich habe zunächst die Klasse (Klassenmodul) Node:
Option Explicit ' use explicit type declaretion !
' internal values:
Private dbl_Y As Double
Private dbl_Z As Double


Private Sub Class_Initialize()
dbl_Y = 0
dbl_Z = 0
End Sub

' factory method:

Public Sub Create(y As Double, z As Double)
dbl_Y = y
dbl_Z = z
End Sub

'Properties_______________________________________________________
Public Property Get y()
y = dbl_Y
End Property
Public Property Get z()
z = dbl_Z
End Property
Diese soll in einer andern Sub benutzt werden:
Sub computeCrossSection()
Dim iNodes As Integer
Dim iElements As Integer
Dim d_maxY As Double
Dim d_maxZ As Double
Dim d_minY As Double
Dim d_minZ As Double
Dim section As clsSection
numNodes = Range("nodeCount").Cells(1)
iElements = Range("elementCount").Cells(1)
d_maxY = Range("maxY").Cells(1)
d_maxZ = Range("maxZ").Cells(1)
d_minY = Range("minY").Cells(1)
d_minZ = Range("minZ").Cells(1)
Dim i As Integer
For i = 22 To numNodes + 22
Dim y As Double
Dim z As Double
y = Cells(3, i)
z = Cells(4, i)
Dim newNode As clsNode
With newNode
.y = y
.z = z
End With
Next i
End Sub
Ich bekomme immer den Fehler "objektvariable oder with block variable nicht festegelegt"
was hab ich hier Falsch gemacht?
vielen Dank im Voraus!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufruf klassensubroutine
25.06.2016 23:42:30
Nepumuk
Hallo,
du musst eine Instanz der Klasse erzeugen:
Dim newNode As clsNode
Set newNode = New clsNode

Gruß
Nepumuk

AW: Aufruf klassensubroutine
26.06.2016 17:39:02
beebelbrox
Hallo Nepumuk,
vielen Dank für die Antwort. Das funktioniert jetzt auch soweit. Ich bekomme nun jedoch den gleichen Fehler an einer anderen Stelle (für das section Objekt am Ende der Schleife: Call section.addNode(newNode))
Was habe ich diesmal Falsch gemacht ???
vielen Dank im Voraus!
Sub computeCrossSection()
Dim numNodes As Integer
Dim numElements As Integer
Dim d_maxY As Double
Dim d_maxZ As Double
Dim d_minY As Double
Dim d_minZ As Double
numNodes = Range("nodeCount").Cells(1)
numElements = Range("elementCount").Cells(1)
d_maxY = Range("maxY").Cells(1)
d_maxZ = Range("maxZ").Cells(1)
d_minY = Range("minY").Cells(1)
d_minZ = Range("minZ").Cells(1)
Dim section As clsSection
Set section = New clsSection
Call section.create(numNodes, numElements)
Dim i As Integer
For i = 22 To numNodes + 22
Dim y As Double
Dim z As Double
y = Cells(3, i)
z = Cells(4, i)
Dim newNode As clsNode
Set newNode = New clsNode
Call newNode.create(y, z)
Call section.addNode(newNode)
Next i
End Sub

Anzeige
AW: Aufruf klassensubroutine
26.06.2016 19:30:03
Nepumuk
Hallo,
kann ich freihändig nicht nachvollziehen. Lade bitte eine Mustermappe hoch.
Gruß
Nepumuk

AW: Aufruf klassensubroutine
27.06.2016 19:18:20
beebelbrox
Hallo Nepumuk
Habe Gestern Abend noch ein wenig rumprobiert.
Das Problem scheint in der section Klasse zu liegen.
Ich verstehe allerdings nicht wo.
Eine Beispielmappe liegt unter:

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


Vielen Dank für deine Hilfe!

AW: Aufruf klassensubroutine
27.06.2016 19:38:56
Nepumuk
Hallo,
du hast vergessen die Arrays in der Klasse auch als Klasse zu instanziieren. Zudem verweist du Klassenparameter an die Klassenarrays ohne Set-Anweisung.
https://www.herber.de/bbs/user/106570.xlsm
Gruß
Nepumuk

Anzeige
AW: Aufruf klassensubroutine
27.06.2016 20:00:16
Nepumuk
Nochmal Hallo,
hier findest du ein bisschen Lektüre zu Klassen in Excel wie Factory-Class, Konstruktor überladen usw.:
http://www.office-loesung.de/viewforum13_0_0.php
Gruß
Nepumuk

AW: Aufruf klassensubroutine
27.06.2016 20:21:57
beebelbrox
Vielen Dank für die schnelle Antwort!
Das ist doch wiet aufwändiger als ich es von anderen Programiersprachen gewohnt bin.
Da wäre ich so schnell von allein (auch mit suchen) nicht drauf gekommen.
Vielen Dank für den Link. Der wird voraussichtlich eine große Hilfe sein.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige