VBA notation in Calc : Забавный пример

Автор eeigor, 19 декабря 2020, 22:08

0 Пользователи и 1 гость просматривают эту тему.

eeigor

Забавный пример с обращением к диапазонам в стиле Excel. Выполните процедуру Main. Удобно. Но стоит ли?..

Module1
Option Explicit

Dim Sheets(2) As New CSheet

Sub Main
   Call InitSheets

   ' For example
   Sheets(2).Range("A1").Value = 123
   MsgBox Sheets(2).Range("A1").Value
End Sub

Sub InitSheets()
   Dim i%
   For i = 0 To 2
       Sheets(i).Sheet = ThisComponent.Sheets(i)
   Next
End Sub


CSheet
Option Compatible
Option ClassModule
Option Explicit

Public Sheet

Function Range(Name As String)
   Range = Sheet.getCellRangeByName(Name)
End Function


UPD:
Закомментировал строку <Option ClassModule>, и не работает. Что, здесь в Basic нельзя создавать свои модули класса?
Только так
Option Compatible
Option ClassModule
Option Explicit

Private _myvar As String

Public Property Get myvar() As String
   myvar = _myvar
End Property

Public Property Let myvar(str As String)
   _myvar = str
End Property


Ну, да: Option ClassModule  //Use to create classes (+ Option Compatible)
А для объектных свойств Let заменить на Set?
Это вообще стабильно работает тут? А отвечают здесь...
Есть ли "цельное" описание этой возможности?

UPD2:
Подробности и примеры использования в библиотеке "Access2Base".
Ubuntu 18.04 LTS • LibreOffice 7.3.5.2 Community