VBA Objekte

Hallo,

ich es möglich ein Objekt zu erzeugen, der für z.B. drei Spalten zuständig ist? Ich meine mit Objekt eine Instanz zu erzeugen. Kann ich mit VBA Objektorientiert Programmieren?

Mein Ziel ist es, das ich immer 3 Spalten zu einer Gruppe hinzufüge, wenn eine Spalte den Wert 0 hat, so soll die ganze Gruppe grau hinterlegt sein, das keine weiteren eingaben mehr erfolgen.

Vielen Dank

Gruß Wischnor

Hallo,

ich es möglich ein Objekt zu erzeugen, der für z.B. drei
Spalten zuständig ist? Ich meine mit Objekt eine Instanz zu
erzeugen. Kann ich mit VBA Objektorientiert Programmieren?

Jein,
wenn Du eine Klasse schreibst, die das Objekt beschreibt, dann ja…

Mein Ziel ist es, das ich immer 3 Spalten zu einer Gruppe
hinzufüge, wenn eine Spalte den Wert 0 hat, so soll die ganze
Gruppe grau hinterlegt sein, das keine weiteren eingaben mehr
erfolgen.

Was heisst hinzufügen?
Zu einer Gruppe wovon?

Gruß HW

Hallo Wischnor,

ich es möglich ein Objekt zu erzeugen, der für z.B. drei
Spalten zuständig ist? Ich meine mit Objekt eine Instanz zu
erzeugen. Kann ich mit VBA Objektorientiert Programmieren?

wie Hans schon sagte dafür gibt es in Vba klassenmodule.
Im Editor siehst du ja die Module für DiesesArbeitsmappe, Tabelle1, Tabelle2, usw. das sind alles Klassenmodule.

Ich kenne mich da mit den Begrifflichkeiten nur sehr mies aus. Also kann ich mich falsch ausdrücken mit Bezeichnungen.
Für mich ist dann z.B. im Klassenmodul „Tabelle1“ die Tabelle1 das Objekt. Dieses reagiert auf verschiedene Ereignisse in sich, also zellenänderung, Zellenwechsel usw.

Vielleicht mal ein Beispiel, du willst auf dem Bildschirm einen Taschentechner nachbilden mit 50 Tasten.
Dazu könntest du 50 Schaltflächen/Command Buttons nehmen und für jeden einen Code schreiben was geschieht wenn man ihn anklickt.
Das macht den Code sehr lang.

Eleganter ist dafür eine Klasse anzulegen. Dann hast du nur einen Code für alle 50.

Völlig analog zu
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

was ja wenn es im Klassenmodul von tabelle1 steht auf einen Zellenwechsel reagiert hast du dann die ähnliche Funktionalität für jeden deiner 50 CommandButtons.

Völlig erfunden sieht das dann so in etwa aus:

Private Sub CB_Click(ByVal Button As irgednwas)

Jetzt kannst du bequem in dieser Sub den geklickten Button auswerten.
If Button=„1“ then schreibe eine 1 in das Anzeigefeld des Rechners
usw.

Was ich jetzt nicht weiß ist, ob man auch 3 Spalten als Klasse=Objekt anlegen kann

Mein Ziel ist es, das ich immer 3 Spalten zu einer Gruppe
hinzufüge, wenn eine Spalte den Wert 0 hat, so soll die ganze
Gruppe grau hinterlegt sein, das keine weiteren eingaben mehr
erfolgen.

Das müßte m.E. auch mit normalem Vba gehen, aber mir ist auch leicht unklar was du da genau vorhast.

Ich kann nur hoffen daß es einigermaßen verständlich war was ich schrieb und damit sagen wollte :smile:

Gruß
Reinhard

Vielen Dank für eure Mühe.

Ich meinte sowas wie Container.add(Objektnr, objekt, etc…)

Also sowas in der Art

Public class test ()
{

get
set

}

in public static void main…

ein objekt erzeugen, sowas in der art

test a= new test();
a.set(…)

Ihr wisst schon was ich meine, oder?

objekte anlegen, wie eine Linklist in der art, oder ein vector.

das ich darauf zugreifen kann.

vielen dank nochmals

gruß

wischnor