Vba word вставить массив

I have an abstraction of a table hold als a two dimensional String array in Word VBA.

Now I want to save this array into a table in a word document, without iteration through both dimensions…afaik there is a method to get a Range(…) content from excel as array…

e.g.:

Dim rng As Excel.Range
Set rng = excelTabelle.Range("A4:F" + CStr(lastRow))
arrData = rng.Value

is there a similar solution for pasting this into a Word table?

Iterating needs too much time for the execution, so I’m looking for a more efficient way to do that.

Greets, poeschlorn

skaffman's user avatar

skaffman

397k96 gold badges815 silver badges768 bronze badges

asked Nov 28, 2010 at 14:40

poeschlorn's user avatar

1

One solution may be to utilize the clipboard for your needs. It is not so easy as in Excel, but perhaps fast enough for you. Here is some sample code how to get some text through the clipboard into a 2×3 word table (add a reference to Microsoft Forms 2.0 object library to your VBA doc):

Dim oData As New DataObject
Dim sText As String

' Navigate to the top-left cell of your table (just an example)
Selection.HomeKey Unit:=wdStory

' Put text to the clipboard
sText = "X1" & vbTab & "B1" & vbTab & "C1" & vbCrLf
sText = sText & "A2" & vbTab & "B2" & vbTab & "C2" & vbCrLf

On Error Resume Next
oData.SetText sText
oData.PutInClipboard
On Error GoTo 0

' Select the needed rows and columns of the table'
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend

' Paste the clipboard to the table '
Selection.Paste

I suggest that you adapt this to put an arbitrary 2-dimensional array into a string and paste it in a similar manner. If you need more help, come back give us more details, please.

answered Nov 28, 2010 at 15:57

Doc Brown's user avatar

Doc BrownDoc Brown

19.6k7 gold badges52 silver badges88 bronze badges

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Public Sub zBookmarks()
Dim arr As Variant, x1, x1k, nstr
Dim C1, C2, C3, C4, C5, C6, C7 As String
Dim path
Dim wd As Object
'Word.Application
Dim doc As Object
'Word.Document
Dim tbl As Object
'Word.Table
'------------------------------------------------'
arr = Worksheets("Лист1").Range("A1:G7").Value   ' Для примера
'------------------------------------------------'
x1 = LBound(arr, 1)
x1k = UBound(arr, 1) - 1
 
path = ThisWorkbook.path
Set wd = CreateObject("Word.Application")
wd.Visible = True 'Поменять потом на False
wd.Documents.Open Filename:=path & "" & "WORD.dotm"
''wd.Documents.Open Filename:=path & "" & "EXRD111.dotm"
Set doc = wd.ActiveDocument
Set tbl = doc.tables(1)
x1 = 0
Do While x1 < x1k
x1 = x1 + 1
Debug.Print x1;
If x1 > 1 Then
 
tbl.Cell(x1 + 2, 1).Select
wd.Selection.InsertRowsBelow 1
End If
With tbl
''    .Cells(x1 + 2, 1).Range.Text = arr(x1, 1)
 
tbl.Cell(x1 + 2, 1).Range = arr(x1, 1)
tbl.Cell(x1 + 2, 2).Range = arr(x1, 2)
tbl.Cell(x1 + 2, 3).Range = arr(x1, 3)
tbl.Cell(x1 + 2, 4).Range = arr(x1, 4)
tbl.Cell(x1 + 2, 5).Range = arr(x1, 5)
tbl.Cell(x1 + 2, 6).Range = arr(x1, 6)
tbl.Cell(x1 + 2, 7).Range = arr(x1, 7)
End With
 
Loop
wd.ActiveDocument.SaveAs2 Filename:=path & "" & "EXRD1.doc"
wd.ActiveDocument.Close
wd.Quit
Set wd = Nothing
End Sub

I want to declare a dynamic string array, then make calls to each of the other procedures. This is what I have, I thought it would work but I keep getting errors.

Option Explicit

Sub Main()

   Public ListArr() As String

   Application.Run "Get_Input_List"

End Sub

Function Get_Input_List(ByRef ListArr() As String) As String

   Dim list As String
   Dim MesBox As String

  list = InputBox("Please enters word to sort using a comma with no space to separate", "Words")

  ListArr = Split(list, ",")

  MsgBox ListArr(1)

End Function

Deduplicator's user avatar

Deduplicator

44.3k7 gold badges65 silver badges115 bronze badges

asked Sep 21, 2016 at 0:42

LRoyster's user avatar

A couple issues here. First, Public can only be used as an access modifier for Module level variables — not local ones, so it should be Dim ListArr() As String. Second, you don’t need to use Application.Run to call procedures in the same project. If you did, you aren’t passing the required parameter (which can’t be passed ByRef via Application.Run anyway). Third, Get_Input_List is a function, so you should probably return the result of the Split. Right now it always returns vbNullString. I’m guessing that you’re looking for something more like this:

Option Explicit

Sub Main()
   Dim ListArr() As String
   ListArr = Get_Input_List

   Dim inputWord As Variant
   For Each inputWord In ListArr
        MsgBox inputWord
   Next
End Sub

Function Get_Input_List() As String()
    Dim list As String

    list = InputBox("Please enter words to sort separated with a comma and no spaces", "Words")
    Get_Input_List = Split(list, ",")
End Function

answered Sep 21, 2016 at 0:52

Comintern's user avatar

CominternComintern

21.7k5 gold badges33 silver badges80 bronze badges

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Пробую работать с документами Word. Копирование данных в Excel.
Опять же, работает-грузится. Но через копировать/вставить. Долго.
Как можно данные Word записать в массив? Можно только значения.
В Excel: задал диапазон, массив = значениям Range.
Тут не получилось.

Прикрепленные файлы

  • проба.rar (25.53 КБ)

 

anvg

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#2

03.12.2013 18:47:38

Может так?

Скрытый текст

Или анализировать ActiveDocument.Range.Text, продумывать как разбивать этот текст для массива вывода на лист.

Изменено: anvg03.12.2013 18:48:15

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#3

03.12.2013 19:02:42

Наверное, проще. Еще не пробовал. Спасибо.

Цитата
…продумывать как разбивать этот текст для массива вывода на лист

Может, без этого?
Вопрос шире: загнать в массив, обработать-поменять-переделать-переставить. Со второй частью справлюсь, а вот как его туда заставить?

 

anvg

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#4

03.12.2013 19:21:26

Цитата
Может, без этого?
Вопрос шире: загнать в массив

Вот только как, в смысле — загнать? Такого «красивого» Range.Value, дающего массив, в Word ни для текста объекта Range, ни для ячеек таблиц. Можно, конечно, запросить у таблицы число строк/столбцов и циклом по ячейкам (ThisDocument.Tables(1).Cell(idRow, idCol).Range.Text) считать значения в массив, только сомневаюсь, что это будет будет быстрее, чем копировать/вставлять просто текст без форматирования.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Ясно. Я объектную модель Excel плохо знаю, а уж Word:)
Спасибо за разъяснения.

 

SkyPro

Пользователь

Сообщений: 309
Регистрация: 23.07.2013

#6

03.12.2013 20:13:53

Нашел здесь:

http://www.cyberforum.ru/vba/thread693224.html

Может поможет :)

Код
Sub Fill_Table()
Dim tbl As Table
Dim t!, ii&, jj&, s$, w$(), i&
ActiveDocument.Range.Delete
    Set tbl = ActiveDocument.Tables.Add(Selection.Range, 200, 5)
    t = Timer
    Set tbl = ThisDocument.Tables(1) ''' [200*5]
    For ii& = 1 To tbl.Rows.Count
        For jj& = 1 To tbl.Columns.Count
            tbl.Cell(ii&, jj&).Range.Text = CStr(ii& * jj&)
        Next jj&
    Next ii&
    Debug.Print "fill table", Timer - t
    ReDim v(1 To tbl.Rows.Count, 1 To tbl.Columns.Count)
    t = Timer
    For ii& = 1 To tbl.Rows.Count
        For jj& = 1 To tbl.Columns.Count
            s = tbl.Cell(ii&, jj&).Range.Text
            v(ii, jj) = CDbl(Left$(s, Len(s) - 2))
        Next jj&
    Next ii&
    Debug.Print "read table", Timer - t
    t = Timer
    tbl.Range.Copy
                        'Excel должен быть запущен!
    With GetObject(, "excel.application").workbooks.Add(-4167).sheets(1) 'xlwbatworksheet
        .PasteSpecial "Текст", False, False
        v = .usedrange.Value
        .Parent.Close 0
    End With
    Debug.Print "Excel", Timer - t
    t = Timer
    w = Split(tbl.Range.Text, Chr$(13) & Chr$(7))
    For ii& = 1 To tbl.Rows.Count
        For jj& = 1 To tbl.Columns.Count
            v(ii, jj) = CDbl(w(i))
            i = i + 1
        Next jj&
        i = i + 1 'пустой столбец, который всегда есть справа от таблицы
    Next ii&
    Debug.Print "Split table text", Timer - t
Stop    'проконтролировать содержимое v!
End Sub 

SkyPro

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#7

03.12.2013 20:51:19

Что подтверждает: быстрее и проще копировать-вставить, а уже потом над данными издеваться.
И Вам спасиба припасена :)

Одним из решений может быть использование буфера обмена для ваших нужд. Это не так просто, как в Excel, но, возможно, достаточно быстро для вас. Вот пример кода, как получить текст через буфер обмена в таблицу слов 2×3 (добавьте ссылку на библиотеку объектов Microsoft Forms 2.0 в документ VBA):

Dim oData As New DataObject
Dim sText As String

' Navigate to the top-left cell of your table (just an example)
Selection.HomeKey Unit:=wdStory

' Put text to the clipboard
sText = "X1" & vbTab & "B1" & vbTab & "C1" & vbCrLf
sText = sText & "A2" & vbTab & "B2" & vbTab & "C2" & vbCrLf

On Error Resume Next
oData.SetText sText
oData.PutInClipboard
On Error GoTo 0

' Select the needed rows and columns of the table'
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend

' Paste the clipboard to the table '
Selection.Paste

Я предлагаю вам адаптировать это, чтобы разместить произвольный двумерный массив в строку и вставить его аналогичным образом. Если вам нужна дополнительная помощь, верните нам дополнительную информацию, пожалуйста.

Мы очень хорошо знаем, что переменная является контейнером для хранения значения. Иногда разработчики могут удерживать более одного значения в одной переменной за раз. Когда ряд значений хранится в одной переменной, он известен как переменная массива.

Содержание:

  • Объявление массивов
  • Назначение значений массиву
  • Многомерные массивы
  • Объявление ReDim
  • Методы массива
  • Функции для работы с массивами
  • LBound
  • UBound
  • Split
  • Join
  • Filter
  • IsArray
  • Erase

Объявление массивов

Массивы объявляются так же, как объявлена переменная, за исключением того, что объявление переменной массива использует скобки. В следующем примере размер массива указан в скобках.

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Хотя размер массива указывается как 5, он может содержать 6 значений, поскольку индекс массива начинается с ZERO.
  • Индекс массива не может быть отрицательным.
  • Массивы VBScript могут хранить любой тип переменной в массиве. Следовательно, массив может хранить целое число, строку или символы в одной переменной массива.

Назначение значений массиву

Значения присваиваются массиву, указывая значение индекса массива для каждого из назначаемых значений. Это может быть строка.

Пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		   'Number
   arr(3) = 2.45 		   'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

Многомерные массивы

Массивы не ограничиваются одним измерением, однако они могут иметь максимум 60 измерений. Двумерными массивами являются наиболее часто используемые.

пример

В следующем примере многомерный массив объявляется с тремя строками и четырьмя столбцами.

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

Объявление ReDim

Оператор ReDim используется для объявления переменных динамического массива и распределения или перераспределения пространства для хранения.

Синтаксис ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Параметр Описание

  • Preserve — необязательный параметр, используемый для сохранения данных в существующем массиве при изменении размера последнего измерения.
  • Varname — обязательный параметр, который обозначает имя переменной, которое должно соответствовать стандартным соглашениям об именах.
  • Subscript — требуемый параметр, который указывает размер массива.

пример

В следующем примере массив был переопределен, а затем значения сохранялись при изменении существующего размера массива.

Примечание. При изменении размера массива, меньшего, чем это было первоначально, данные в устраненных элементах будут потеряны.

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

XYZ
41.25
22
3
4
5
6
7

Методы массива

В VBScript есть встроенные функции, которые помогают разработчикам эффективно обрабатывать массивы. Все методы, которые используются вместе с массивами, перечислены ниже. Чтобы узнать об этом, нажмите на имя метода.

Функции для работы с массивами

LBound

Функция LBound возвращает наименьший индекс указанного массива.Следовательно, LBound массива — ZERO.

Синтаксис LBound(ArrayName[,dimension])
Параметы и Описание

  • ArrayName — обязательный параметр. Этот параметр соответствует имени массива.
  • Размер — необязательный параметр. Это принимает целочисленное значение, соответствующее размеру массива. Если это «1», то он возвращает нижнюю границу первого измерения;если это «2», то он возвращает нижнюю границу второго измерения и так далее.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim arr(5) as Variant
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript     'String
   arr(2) = 100           'Number
   arr(3) = 2.45          'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
   msgbox("The smallest Subscript value of  the given array is : " & LBound(arr))

   ' For MultiDimension Arrays :
   Dim arr2(3,2) as Variant
   msgbox("The smallest Subscript of the first dimension of arr2 is : " & LBound(arr2,1))
   msgbox("The smallest Subscript of the Second dimension of arr2 is : " & LBound(arr2,2))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The smallest Subscript value of the given array is : 0
The smallest Subscript of the first dimension of arr2 is : 0
The smallest Subscript of the Second dimension of arr2 is : 0

Функция, которая возвращает целое число, соответствующее наименьшему индексу данных массивов.

UBound

Функция UBound возвращает наибольший индекс указанного массива.Следовательно, это значение соответствует размеру массива.

Синтаксис UBound(ArrayName[,dimension])
Параметры и Описание

  • ArrayName — обязательный параметр. Этот параметр соответствует имени массива.
  • Размер — необязательный параметр. Это принимает целочисленное значение, соответствующее размеру массива. Если это «1», то он возвращает нижнюю границу первого измерения;если он равен «2», то он возвращает нижнюю границу второго измерения и т. д.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim arr(5) as Variant
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript     'String
   arr(2) = 100           'Number
   arr(3) = 2.45          'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
   msgbox("The smallest Subscript value of  the given array is : " & UBound(arr))

   ' For MultiDimension Arrays :
   Dim arr2(3,2) as Variant
   msgbox("The smallest Subscript of the first dimension of arr2 is : " & UBound(arr2,1))
   msgbox("The smallest Subscript of the Second dimension of arr2 is : " & UBound(arr2,2))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The Largest Subscript value of the given array is : 5
The Largest Subscript of the first dimension of arr2 is : 3
The Largest Subscript of the Second dimension of arr2 is : 2

Функция, которая возвращает целое число, соответствующее самому большому индексу данных массивов.

Split

Функция Split возвращает массив, который содержит определенное количество значений, разделенных на основе разделителя.

Синтаксис Split(expression [,delimiter[, count[, compare]]])
Параметры и Описание

  • Выражение — требуемый параметр. Строковое выражение, которое может содержать строки с разделителями.
  • Разделитель — необязательный параметр. Параметр, который используется для преобразования в массивы на основе разделителя.
  • Count — необязательный параметр. Количество подстрок, которые нужно вернуть, и если указано как -1, то возвращаются все подстроки.
  • Compare — Необязательный параметр. Этот параметр указывает, какой метод сравнения следует использовать.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение
  • 1 = vbTextCompare — выполняет текстовое сравнение

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   ' Splitting based on delimiter comma '$'
   Dim a as Variant
   Dim b as Variant
   
   a = Split("Red $ Blue $ Yellow","$")
   b = ubound(a)
   
   For i = 0 to b
      msgbox("The value of array in " & i & " is :"  & a(i))
   Next
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The value of array in 0 is :Red
The value of array in 1 is : Blue
The value of array in 2 is : Yellow

Функция, которая возвращает массив, содержащий указанное количество значений. Разделить на разделитель.

Join

Это функция, которая возвращает строку, содержащую указанное количество подстрок в массиве. Это полная противоположная функция метода разделения.

Синтаксис Join(List[,delimiter])
Параметры и Описание

  • Список — требуемый параметр. Массив, содержащий подстроки, которые должны быть соединены.
  • Разделитель — необязательный параметр. Символ, который используется как разделитель при возврате строки. По умолчанию разделителем является Space.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   ' Join using spaces
   a = array("Red","Blue","Yellow")
   b = join(a)
   msgbox("The value of b " & " is :"  & b)
  
   ' Join using $
   b = join(a,"$")
   msgbox("The Join result after using delimiter is : " & b)
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The value of b is :Red Blue Yellow
The Join result after using delimiter is : Red$Blue$Yellow

Функция, которая возвращает строку, содержащую указанное количество подстрок в массиве. Это полная противоположная функция метода разделения.

Filter

Функция фильтра, которая возвращает массив на основе нуля, который содержит подмножество массива строк на основе определенных критериев фильтра.

Синтаксис Filter(inputstrings, value[, include [,compare]])
Параметры и Описание

  • Inputstrings — обязательный параметр. Этот параметр соответствует массиву строк для поиска.
  • Значение — требуемый параметр. Этот параметр соответствует строке для поиска по параметру inputstrings.
  • Include — необязательный параметр. Это логическое значение, которое указывает, следует ли возвращать подстроки, которые включают или исключают.
  • Compare — Необязательный параметр. Этот параметр описывает, какой метод сравнения строк должен использоваться.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение
  • 1 = vbTextCompare — выполняет текстовое сравнение

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim a,b,c,d as Variant
   a = array("Red","Blue","Yellow")
   b = Filter(a,"B")
   c = Filter(a,"e")
   d = Filter(a,"Y")
  
   For each x in b
      msgbox("The Filter result 1: " & x)
   Next
  
   For each y in c
      msgbox("The Filter result 2: " & y)
   Next
  
   For each z in d
      msgbox("The Filter result 3: " & z)
   Next
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.p The Filter result 1: Blue
The Filter result 2: Red
The Filter result 2: Blue
The Filter result 2: Yellow
The Filter result 3: Yellow

Функция, которая возвращает массив с нулевым основанием, который содержит подмножество массива строк на основе определенных критериев фильтра.

IsArray

Функция IsArray возвращает логическое значение, указывающее, является ли указанная входная переменная переменной или переменной NOT переменной массива.

Синтаксис IsArray(variablename)
пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim a,b as Variant
   a = array("Red","Blue","Yellow")
   b = "12345"
  
   msgbox("The IsArray result 1 : " & IsArray(a))
   msgbox("The IsArray result 2 : " & IsArray(b))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The IsArray result 1 : True
The IsArray result 2 : False

Функция, возвращающая логическое значение, указывающее, является ли входная переменная массивом.

Erase

Функция Erase используется для сброса значений массивов фиксированного размера и освобождения памяти динамических массивов.Он ведет себя в зависимости от типа массивов.

Синтаксис Erase ArrayName

  • Фиксированный числовой массив, каждый элемент в массиве сбрасывается до нуля.
  • Исправлен строковый массив, каждый элемент в массиве сбрасывается до нулевой длины «».
  • Массив объектов, каждый элемент в массиве сбрасывается до специального значения Nothing.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   Dim NumArray(3)
   NumArray(0) = "VBScript"
   NumArray(1) = 1.05
   NumArray(2) = 25
   NumArray(3) = #23/04/2013#
  
   Dim DynamicArray()
   ReDim DynamicArray(9)   ' Allocate storage space.
  
   Erase NumArray          ' Each element is reinitialized.
   Erase DynamicArray      ' Free memory used by array.
  
   ' All values would be erased.
   msgbox("The value at Zeroth index of NumArray is " & NumArray(0))
   msgbox("The value at First index of NumArray is " & NumArray(1))
   msgbox("The value at Second index of NumArray is " & NumArray(2))
   msgbox("The value at Third index of NumArray is " & NumArray(3))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

The value at Zeroth index of NumArray is
The value at First index of NumArray is
The value at Second index of NumArray is
The value at Third index of NumArray is

Функция, которая восстанавливает выделенную память для переменных массива.

 С уважением, авторы сайта Компьютерапия

Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

Like this post? Please share to your friends:
  • Vba word вставить картинку в колонтитул
  • Vba word базы данных
  • Vba word абзац это
  • Vba word with end with
  • Vba word view type