Вы можете попробовать этот метод, который объединяет несколько массивов:
public static <T> T[] concatMultipleArrays(T[]... arrays)
{
int length = 0;
for (T[] array : arrays)
{
length += array.length;
}
T[] result = (T[]) Array.newInstance(arrays.getClass().getComponentType(), length) ;
length = 0;
for (int i = 0; i < arrays.length; i++)
{
System.arraycopy(arrays[i], 0, result, length, arrays[i].length);
length += arrays[i].length;
}
return result;
}
'1. Вставьте модуль
'2. Объявите общедоступную переменную рабочего листа в модуле следующим образом
Public xlwkGSModel As Worksheet
'3. Создайте экземпляр этой общедоступной переменной в событии загрузки приложения
Sub Workbook_Open()
Set xlwkGSModel = ActiveWorkbook.Worksheets("gs_model")
End Sub
'Теперь вы можете ссылаться на рабочий лист gs_model с помощью переменной xlwkGSModel
' Например
dim x as string
x = xlwkGSModel.Cells(1,1)
Можно, но действительно ли вам нужно больше глобальных переменных? Почему бы не создать (в стандартном модуле) общедоступное свойство ModelWorksheet, например:
Public Property Get ModelWorksheet As Worksheet
Const ModelWorksheetName As String = "gs_model"
Set ModelWorksheet = ActiveWorkbook.Worksheets(ModelWorksheetName)
End Property
... тогда ваш код может:
With ModelWorksheet
.Cells(1,1).Value = "foo"
.Font.Bold = True
End With
Обратите внимание, что вы можете ссылаться на любой из листов в текущей книге напрямую, поэтому, если есть лист с именем Sheet1, вы можете сделать:
With Sheet1
.Cells(1,1).Value = "foo"
.Font.Bold = True
End With
Изменить: Комментарий Алистера Нока верен, я должен был внимательно прочитать вопрос - конечно, мой ответ недействителен для объектов, только для таких типов, как строка или целое число. Для объектов вам нужна функция или подпрограмма, которая создает экземпляр.
Да, вы можете, я недавно сделал это. Если вы определяете свои определения как Public
, вы можете использовать их непосредственно в других ваших модулях (в той же книге, конечно).
Возможно, лучший подход - иметь отдельный модуль Globals и положите их туда.