Vorbelegung von Refedit
Hintergrund
Refedit ist ein Conrol-Element, das zum Markieren von Zellen in Excel
verwendet werden kann. Während der Markierung wird die gesamte Form, in der das Control eingebunden ist, ausgeblendet und nur ein kleines Feld enthält die bereits markierten Zellen. Beim Drücken des kleinen Buttons mit dem roten Pfeil rechts in der Form, erscheint wieder die vollständige Maske. |
Problembeschreibung
Will man eine bereits vorher markierten Bereich als Wert übergeben, muss die Beschreibung des Bereiches nicht als Range sondern als Text übergeben werden.
Lösung
Mit den Funktionen FlaechenText und ZellenText können Sie einen Range als Text übergeben.
Sub maske_initialisierung()
Dim save_Boolean As Boolean
Dim selected As Range
If Not (Selection Is Nothing) Then ' Nur notwendig, wenn als Add-In geplant!
If Selection.Areas.count = 1 Then
Set selected = Selection.Areas.Item(1)
RefEdit1.Value = FlaechenText(selected)
End If
End If
End Sub
Function FlaechenText(selected As Range) As String
Dim ReturnValue As String
ReturnValue = ZellenText(selected.Cells(1, 1).row, selected.Cells(1, 1).column) & ":" & _
ZellenText(selected.Cells(selected.Rows.count, 1).row, selected.Cells(1, selected.Columns.count).column)
FlaechenText = ReturnValue
End Function
Function ZellenText(row As Long, column As Long) As String
Dim ReturnValue As String
' Für eine Column gilt:
' WENN(A1>26;ZEICHEN(GANZZAHL((A1-1)/26)+64)&ZEICHEN(REST(A1-1; 26)+65);ZEICHEN(A1+64))
ReturnValue = "$" & _
IIf (column > 26, _
Chr$(Int((column - 1) / 26) + 64) & Chr$(((column - 1) Mod 26) + 65), _
Chr$(column Mod 26 + 64) _
) & _
"$" & _
Format$(row)
ZellenText = ReturnValue
End Function