Забавный пример с обращением к диапазонам в стиле 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".