URL: https://www.overclockers.at/coding-stuff/struct_in_vb_108975/page_1 - zur Vollversion wechseln!
gibts eine Möglichkeit in Visual Basic einen Struct (wie in c/c++) zu machen?
Code:Type FORGETITVBSUCKS bIWontCodeVBAnymore As Boolean End Type
thx
ich mag VB auch ned - habs seit über 3 Jahren nimma angerührt
allerdings will mein Kompanie Kommandant unbedingt, dass das Projekterl in VB (bei Exceltabelle) realisiert wird.
ich hab eh 2 meiner Meinung nach schönere und bessere Lösungen vorgeschlagen ... was solls
lieber drinnen sitzen als draußen Brücken auf- und abbaun
noch was:
Type TreeNode
ID as Integer
Next as TreeNode
End Type
gibt mir die Meldung: Microsoft Excel kann das Makro 'KleinerTest.xls!Modul1.Berechnung' nicht finden
Jetzt das ganze etwas detailierter:
Es soll ein "programm" für Excel erstellt werden, dass Eingaben in Spalten auswertet und ergänzt
z.b. in Spalte B stehen ein haufen Namen, die eingelesen werden und daneben in Spalte C, D, ... was dazu kommt
ich bin es mal so heran gegangen, dass ich im Menü einen neuen Button gemacht und dem ein Makro zugewiesen hab. In diesem Makro mach ich dann alles.
Im Code Editor gibts beim Projekt eine Auflistung von Microsoft Excel Objekten und Modulen. Bei Excel Objekten ist die aktuelle Arbeitsmappe und die Tabelle(n) aufgelistet (bei mir eben "Tabelle1 (KleinerTest")
Bei den Modulen dürften dann z.b. die ganzen Makros aufgelistet sein - bei mir halt "Modul1"
Wenn ich nun den Typ definiere
Type TreeNode
ID as Integer
Next as Integer
End Type
funktionierts soweit ganz gut - nur dass ich dann alles in einer Liste halten und selbst verwalten muss.
Schöner würds sein, wenn ich
Type TreeNode
ID as Integer
Next as TreeNode
End Type
machen könnte.
Allerdings funktioniert das nicht. Es wird dann das Macro nicht mehr gefunden.
Ich bin schon drauf gekommen, dass vor der Funktion keine ausführbaren Bereiche stehen dürfen, damit die Funktion gefunden wird - aber beim Struct erstellen dürfte doch nichts ausgeführt werden ...
Woran kann es liegen?
Weiß wirklich keiner Rat?
:/
*nach oben schieb*
Du darfst das Ding jedenfalls nicht "Next" nennen, weil das ein Schlüsselwort von VB ist. Eine richtige Lösung hab ich aber jetzt auch noch nicht gefunden.
EDIT: Hmm, das Next beeindruckt ihn gar nicht. Geht anscheinend doch.
Bei mir sagt er jedenfalls "Circular dependencies between modules"
EDIT2: Ich fürchte, man muss den Next-Pointer als Object deklarieren und dann immer casten, wenn man ihn braucht.
Bei mir gibts gleich am Anfang eine Fehlermeldung mit (ein Bild sagt bekanntlich mehr als 1000 Worte)
sry wegen quali - hab 56k Modem
Da fehlt ein dim
autsch ...
danke
nachtrag: wenn du mir noch sagst, wie man in VB einen Cast macht, hat sich der Thread erledigt
was willst casten? (gibts das wort?)
einer Object-Variable einfach einen eigenen Typ zuweisen.
z.B. wie in Java:
Object bla = new Object();
MyClass asdf = new MyClass();
bla = (Object)MyClass();
oder so ähnlich - ich komm grad vom Chargendienst zurück und steh grad a bissl daneben (durchmachen is da nix gutes
)
btw: "casten" hat mein ehemaliger Programmierlehrer zu Hauf im Unterricht verwendet - und er war ein alter C++ und Java Guru ... da muss es das wort doch fast geben
na ja.. germanism
vba is nicht wirklich oop.. soll heissen, wenn du keine vererbung hast, wieso willst du dann casten?
würd eher eine convert funktion machen die danach eine "konvertierte" klasse, struct (type dings halt) ausspuckt. besser gehts wahrscheinlich nicht.
ich glaub ich pfeif einfach drauf und verwalte das Ganze selbst in einer Liste
eines weiß ich schon sicher: das wird definitiv mein letztes VB Projekt(chen) sein (hab ich mir beim letzten Projekt vor über 4 Jahren auch schon gesagt - fällt mir grad wieder ein )
btw: edlen Postzeitpunkt hast du
dürft zwar schon erledigt sein, aber wennst ein objekt einem anderen zuweisen willst musst das mit "set" machen also
...so in der artCode:dim testnode as TestNode2 set testnode = new TestNode2 set testnode = nothing if testnode is nothing then msgbox "testnode = nothing" end if
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025