Impressum   

Vorbelegung von Refedit

Hintergrund

Refedit in Aktion 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 RangeAs 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 LongAs 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