Forum des VBA-Tutorials

Funktion oder Ereignis? Rückgabewert oder Eigenschaft? (VBA)

Sophie, Montag, 09. Januar 2017, 11:14 (vor 79 Tagen)

Hallo Leute,

ich habe ein Problem mit der Programmierung der bedingten Formatierung meiner Exceltabelle.

Über eine Maske werden Messwerte in ein Tabellenblatt eingegeben. Auf einem zweiten Tabellenblatt stehen die Toleranzgrenzen für bestimmte Merkmale.

Bei der Datenübertragung der Eingabewerte aus der Maske in Tabellenblatt 1 möchte ich jetzt auf eine Funktion zugreifen, die mir aus Tabellenblatt 2 den oberen Grenzwert und den unteren Grenzwert für das jeweilige Merkmal raussucht und an meine übergeordnete Prozedur zurückgibt. Diese nutzt die Werte um zu vergleichen, ob die Messwerte innerhalb der Grenzen liegen, ansonsten soll der Wert rot in die Tabelle übertragen werden.

Hier ein Ausschnitt des übergeordneten Programms (die Werte werden über eine Schleife ausgelesen und eingetragen, W ist die Objektvariable die auf mein Tabellenblatt 1 zeigt, U greift auf die Eingabemaske zu, das funktioniert auch einwandfrei):

W.Cells(zeile, spalte) = U.Controls("TB" & b & c).Value

//übernimmt meine Werte

Set OT = W.Cells(zeile, spalte).OGW(b, zeile, rot)
Set UT = W.Cells(zeile, spalte).UGW(b, zeile, rot)

// OGW und UGW sind die Namen der Funktion auf die zugegriffen werden soll, die Variablen b, zeile, rot werden übergeben, um in der Funktion den richtigen Grenzwert zu filtern (ich gehe hier davon aus, dass ich eine Objekteigenschaft festgelegt habe, Erklärung siehe unten)


If U.Controls("TB" & b & c).Value < UT Or U.Controls("TB" & b & c).Value > OT Then
W.Cells(zeile, spalte).Font.Color = vbRed
End If

// Vergleich mit entsprechender Formatierung

Meine "Funktion" ermittelt folgendes Ergebnis:

OGW = ActiveWorkbook.Worksheets(2).Cells(i, 8)

//meiner Meinung nach ist das ja ein Objekt


Das Problem ist nun Folgendes:

Ich weiß nicht, ob ich die "Funktion" als Funktion deklarieren soll, oder als Ereignis (weil es sich ja um Objekte handelt, daher auch das Set OT im übergeordneten Programm).

Ich habe alles versucht: als Funktion, als Methode und als Proberty Let und Get. Aber nie erhalte ich einen Rückgabewert, der verarbeitet werden kann. Entweder die Typen waren nicht kompatibel oder es hat einfach nix gemacht oder bei den Ereignissen ist meine Deklaration falsch. Könnt ihr mir sagen wie ich vorzugehen habe, damit ich einen Rückgabewert für meinen Vergleich erhalte?

Vielen Dank schon mal


gesamter Thread:

 RSS-Feed dieser Diskussion

powered by my little forum