Fehler:Property Verfahren Definitionen inkonsistent - Get und Set VBA
Code:
Private pColumnLabels() As MSForms.Label
Public Property Get Column(Index As Integer) As MSForms.Label
'some irrelevant code here
Set Column = pColumnLabels(Index)
End Property
Public Property Set Column(lbl As MSForms.Label, Index As Integer) <--- errornous line
Set pColumnLabels(Index) = lbl
End Property
Grundsätzlich ich etwas ähnliche Steuerelement List-Box bin zu schaffen (aber mit der Fähigkeit, spezifisch anpassen Zellen nach meinem Geschmack, zB Hintergrundfarbe, Schriftart usw.) und so hat jede meiner Zeilen mehrere Spalten. Ich erstelle Etiketten an anderer Stelle, und dann möchte ich diese Beschriftungen dem Array zuweisen, das es für jede Zeile enthält.
Gegeben Index, ich möchte (Get
) die Bezeichnung für diese bestimmte Spalte zurückgeben, so dass zum Beispiel row.Column(0).caption
Überschrift für die angegebene Spalte zurückgeben würde.
Mitgeliefertes Etikett und Index wird Set
das Etikett zu dieser bestimmten Zeile, so dass: Set row.Column(0) = someLabel
. Ich kann sehen, warum das Set falsch ist, dh. Ich sollte etwas tun wie Set row.Column = {someLabel, 0}
, aber das ist nicht in VBA möglich.
Irgendwelche Vorschläge, wie man das ordentlich macht? Ich weiß, ich kann eine Funktion erstellen, die die Parameter werden geben wird, also so etwas wie:
Public Function passParams(lbl as MSForms.Label, Index as Integer)
Set pColumnLabels(Index) = lbl
End Function
Aber dann bekomme ich nicht die nette Funktionalität der Beispiele zu tun in der Lage, die ich oben vorgesehen, das heißt, statt von:
row.Column(0).caption 'get
Set row.Column(0) = someLabel 'set
würde ich
row.Column(0).caption 'get
Call row.passParams(someLabel, 0) 'set
Was ist pColumnLabels? –
@Nathan_Sav 'Private pColumnLabels() Wie MSForms.Label' – emihir0
Ist dies definiert, um die Beschriftungen zu enthalten, d. H. Existiert ein Index von x in diesem Array? Wie es leer definiert ist, überprüfen Sie, ob Index <= ubound (pcolumnlabels) –