Vba объявление массива: Все про массивы в VBA читать в пошаговом руководстве по Excel

массивы — Поиск минимального элемента массива в формате h:mm (VBA)


Вопрос задан


Изменён
1 год 7 месяцев назад


Просмотрен
137 раз

Помогите доработать код, чтобы из массива, состоящего из времени и нескольких суток, выводилось в формате h:mm, а не как дробь.

Private Sub CommandButton1_Click()
Dim b(11) As Integer
For i = 2 To 11
    b(i) = Worksheets("Лист1").Cells(i, 2).Value
Next i
s_min = b(2)
For i = 2 To 14
    If b(i) < s_min Then
        s_min = b(i)
    End If
Next i
     MsgBox "Наименьшее значение: " & s_min
End Sub
  • массивы
  • excel
  • vba

Время — часть суток, 1 сутки — это 1 (единица). Это значит, что время — дробное число <1.

В самом начале процедуры заложена ошибка: Dim b(11) As Integer — объявление массива ЦЕЛЫХ чисел. Какое бы время не находилось в ячейках, в массив запишется значение, округленное до целого, т.е. 0 или 1.

Размерность объявленного массива начинается с нуля (Dim b(11) — от 0 до 11, 12 элементов), но заполнение в первом цикле начинается с елемента 2.

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

Чтобы вывести результат не дробным числом, а в формате времени — Format(s_min, "hh:mm:ss")

Не нужно забывать об объявлении всех используемых переменных.

Sub MinTime()
    Dim aTime()
    Dim s_min As Double
    Dim i As Long
    
    aTime = Worksheets("Лист1").Range("B2:B11").Value
    s_min = 1
    
    For i = 1 To UBound(aTime)
        If aTime(i, 1) < s_min Then s_min = aTime(i, 1)
    Next i
    
    MsgBox "Наименьшее значение: " & Format(s_min, "hh:mm:ss")
End Sub






7







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации



Почта

Необходима, но никому не показывается




By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.


Ввод одномерных массивов. Вывод одномерных массивов

Лекция № 28

Использование массивов


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


Оператор Option Base


 

Обычно в VBA используются массивы с нулевой базой, что не совсем удобно. Было бы гораздо удобнее, если бы элементы массива нумеровались, начиная с 1, а не с 0.

VBA позволяет задавать начальное число для элементов массива. Можно задавать нижнее число для индексов массива при объявлении массива или использовать директиву компилятора Option Base для указания того, должна ли нумерация индексов начинаться с 0 или с 1.

Директива компилятора Option Base имеет следующий синтаксис:

 

Option Base 0/1

 

Option Base 0

 

– установка по умолчанию;

 

Option Base 1

 

– индексы массива начинаются с 1.

 

 

Для объявления массивов используется оператор Dim. С помощью Dim можно объявлять как одномерные, так и многомерные массивы.

Объявление массива с помощью оператора Dim имеет следующий синтаксис:

 

Dim имя массива ([ измерения массива ]) [As Type]


Измерения массива могут быть заданы следующим образом:

 

нижний диапазон ТО верхний диапазон, нижний диапазон ТО верхний диапазон…

 

или

 

верхний диапазон, верхний диапазон…

 

Следующие примеры являются допустимыми объявлениями массива:

 

Dim str_array(l To 100) As String

 

Dim str_Multiplication(0 To 15, 0 To 15) As String

 

 

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

Обращение к элементу массива имеет следующий синтаксис:

 

имя массива (индексl, индекс2,…)

 

Необходимо предоставлять значение индекса для каждого измерения массива при каждом обращении к какому-либо элементу в массиве. Например, для двумерного массива необходимо всегда определять два индекса-Допустимым индексом является любая переменная VBA или выражение, имеющее результатом целое число в диапазоне объявленных измерений массива. Например, допустимым значением индекса для одномерного массива объявленного с индексами 1-10, может быть любое выражение VBA, имеющее результатом целое число в диапазоне от 1 до 10. Использование меньшего или большего индекса, чем диапазон для определенного изменения в массиве, приводит к ошибке.

 

 

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

Так как элементы массивов обозначены одним именем и различаются их местом расположения (индексом), алгоритм задачи, основывается на циклическом повторении некоторых операций, причем переменной цикла, как правило, является индекс.

Пример подобного алгоритма – ввод одномерного массива А, содержащего n элементов, а память ЭВМ. Блок-схема решения такой задачи представляет собой одиночный цикл.

В зависимости от применяемого оператора ввода возможны два варианта программы:

а) программа с оператором ввода InputBox:

 

Dim n As Integer

Dim i As Integer

Dim Int_Array() As Integer

n = InputBox(«Введите количество элементов массива»)

ReDim Int_Array(n)

For i = 1 To n

Int_Array(i) = InputBox(«Введите значение » & i & «-го элемента массива», «Ввод элементов массива «)

Next i

 

б) программа с оператором ввода Cells:

 

Dim n As Integer

Dim i As Integer

Dim Int_Array() As Integer

n = InputBox(«Введите количество элементов массива»)

Dim str_msg As String

For i = 1 To n

Int_Array(i) = Cells (1,i)

Next i

 

Первый вариант рекомендуется использовать при вводе небольших по размеру массивов. Ввод каждого элемента массива осуществляется непосредственным набором цифр на клавиатуре. Ошибочно введенное число записывается в память ЭВМ и для исправления его нужно начать выполнять программу с самого начала, что вовсе не гарантирует от появления новой ошибки при вводе.

В варианте программы с использованием оператора Cells числа записываются в операторе в рабочем листе Excel (в примере элементы забиваются в 1-ой строке, начиная с 1-го столбца). Ошибки могут быть выявлены и исправлены до начала вычислений

Возможен и третий способ ввода элементов массива – когда элемент массива вычисляется по какой-либо формуле, где аргументом является индекс:

 

Dim n As Integer

Dim i As Integer

Dim Int_Array() As Integer

n = InputBox(«Введите количество элементов массива»)

ReDim Int_Array(n)

For i = 1 To n

Int_Array(i) =…

Next i

 

Вывод элементов одномерного массива осуществляется через строковую переменную str_msg, которая первоначально берется пустой str_msg = «». При этом вывод осуществляется в диалоговое окно

 

str_msg = «»

For j = 1 To n

str_msg = str_msg & Int_Array(j) & «, «

Next j

MsgBox «Введено: » & str_msg,, «Вывод ранее введенного массива»

 

С помощью оператора Cells массив можно вывести в рабочий лист Excel:

 

For j = 1 To n

Cells (2, j) = Int_Array(j)

Next j

 

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

 

Пример 24. Ввод-вывод одномерного массива

Sub DemoStatArray()

Dim n As Integer

Dim i As Integer

Dim Int_Array() As Integer

n = InputBox(«Введите количество элементов массива»)

ReDim Int_Array(n)

Dim str_msg As String

For i = 1 To n

Int_Array(i) = InputBox(«Введите значение » & i & «-го элемента массива», «Ввод элементов массива «)

Next i

str_msg = «»

For j = 1 To n

str_msg = str_msg & Int_Array(j) & «, «

Next j

MsgBox «Введено: » & str_msg,, «Вывод ранее введенного массива»

End Sub

 

 

 

 

| следующая лекция ==>
Статические и динамические массивы| Ввод и вывод двумерных массивов
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 7488; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



Массив объявления VBA | Как объявить массив в Excel VBA?

В некоторых случаях нам нужно объявить несколько переменных. И в процессе объявления этих переменных нам нужно присвоить им какое-то значение. Это становится очень раздражающим, когда мы выполняем одну и ту же задачу снова и снова. Чтобы избежать таких ситуаций, в VBA у нас есть Declare Array в имени переменной. Объявление массива в Excel VBA используется, когда нам нужно объявить несколько переменных в последовательности. Таким образом, вместо того, чтобы записывать несколько переменных одну за другой, мы можем объявить одну переменную таким образом, чтобы она удовлетворяла потребности ситуации. Например, если мы хотим присвоить переменным имена 5 сотрудников, обычным способом мы будем делать это одно за другим, объявляя переменную 5 для каждого имени сотрудника, как показано ниже.

Теперь вместо того, чтобы писать и объявлять переменную для каждого из 5 сотрудников, мы можем сократить этот шаг до одной строки кода с помощью VBA Declare Array.

Как объявить массив в Excel VBA?

Мы узнаем, как объявить массив в Excel, используя код VBA.

Вы можете скачать этот шаблон Excel для объявления массива VBA здесь — Шаблон Excel для объявления массива VBA

Массив объявления VBA — пример № 1

VBA. Для этого выполните следующие шаги:

Шаг 1: Откройте модуль в VBA на вкладке меню «Вставка», как показано ниже.

Шаг 2: Напишите подпроцедуру от имени VBA Declare Array, как показано ниже. Мы можем выбрать любое имя согласно нашему требованию.

Код:

 Sub VBA_DeclareArray()

End Sub 

Шаг 3: Теперь объявите переменную, в которой мы будем хранить значение 5 сотрудников в строке. Пусть эта переменная будет Employee (от 1 до 5) для 5 сотрудников.

Код:

 Sub VBA_DeclareArray()

Dim Employee (от 1 до 5) как строка

End Sub 

Шаг 4: Теперь мы можем поместить любое имя под каждой переменной Employee, начиная с Employee(1) и заканчивая Employee(5).

Код:

 Sub VBA_DeclareArray()

Dim Employee (от 1 до 5) как строка

Сотрудник (1) = "Ашвани"
Сотрудник (2) = "Аникет"
Сотрудник (3) = "Ананд"
Сотрудник (4) = "Глубокий"
Сотрудник (5) = "Розовый"

Конец суб 

Посмотрите, как мы сократили 5 строк объявления переменной до 1 строки.

VBA Declare Array — пример № 2

В этом примере мы поместим имена сотрудников, как показано в примере 1, в цикл.

Выполните следующие шаги, чтобы объявить массивы в Excel VBA.

Шаг 1: Напишите подпроцедуру от имени VBA Declare Array, как показано ниже.

Код:

 Sub VBA_DeclareArray2()

Конец суб 

Шаг 2:  После этого объявите в нем 2 переменные. Один для сведений о сотруднике, который мы видели в примере 1, а другой для ячейки в виде целого числа.

Код:

 Sub VBA_DeclareArray2()

Dim Employee (от 1 до 5) как строка
Dim A как целое число

End Sub 

Шаг 3: Теперь откройте цикл For-Next, как показано ниже.

Код:

 Sub VBA_DeclareArray2()

Dim Employee (от 1 до 5) как строка
Dim A как целое число
Для
Следующий А

Конец суб 

Шаг 4:  Теперь в цикле запишите условие выбора ячеек от 1 до 5.

Код:

 Sub VBA_DeclareArray2()

Dim Employee (от 1 до 5) как строка
Dim A как целое число
Для А = от 1 до 5
Следующий А

End Sub 

Шаг 5: Теперь выберите значение Employee, начиная с ячейки 1, которая определена в переменной A.

Код:

 Sub VBA_DeclareArray2()

Dim Employee (от 1 до 5) как строка
Dim A как целое число
Для А = от 1 до 5
Сотрудник (A) = Ячейки (A, 1). Значение
Следующий А

Конец суб 

Шаг 6 Теперь есть два способа увидеть результат. Один от MsgBox и другие от Debug Print . Мы всегда использовали Msgbox, что является самым простым подходом. Теперь мы будем использовать Debug Print, чтобы увидеть имена сотрудников за один раз.

Код:

 Sub VBA_DeclareArray2()

Dim Employee (от 1 до 5) как строка
Dim A как целое число
Для А = от 1 до 5
Сотрудник (A) = Ячейки (A, 1). Значение
Сотрудник Debug.Print(A)
Следующий А

Конец сабвуфера
 

Шаг 7 После этого откройте ближайшее окно, чтобы увидеть результат. Мы будем открывать непосредственное окно из строки меню просмотра, как показано ниже.

Шаг 8 После этого запустите код, нажав клавишу F5 или нажав кнопку Play. Мы увидим, что всего одним щелчком мыши все имена сотрудников извлекаются из столбца A, ячейки с 1 по 5, в окно Immediate.

Это также известно как цикл одномерного массива.

VBA Declare Array — Example #3

В этом примере мы увидим, как объявить массив в виде таблицы. Для этого у нас есть таблица с данными о сотрудниках. Здесь таблица состоит из имени, идентификатора и обозначения сотрудников. По умолчанию лист называется Sheet1 .

Выполните следующие шаги, чтобы объявить массивы в Excel VBA.

Шаг 1: Здесь также рассмотрим переменную, определенную в примере 1. Но наряду со строками вставьте также номера столбцов, чтобы сформировать двумерную матрицу.

Код:

 Sub VBA_DeclareArray3()

Dim Employee (от 1 до 5, от 1 до 3) в виде строки
Dim A как целое число

End Sub 

Шаг 2:  Определите другую переменную для хранения последовательности столбцов в виде целого числа, как показано ниже.

Код:

 Sub VBA_DeclareArray3()

Dim Employee (от 1 до 5, от 1 до 3) в виде строки
Dim A как целое число
Dim B как целое число

Конечный переходник 

Шаг 3: Как и в примере 1, здесь мы также будем использовать цикл For-Next. Но наряду с переменной A (строки) мы будем использовать цикл For-Next и для переменной B (столбцы). Здесь количество столбцов равно 3.

Код:

 Sub VBA_DeclareArray3()

Dim Employee (от 1 до 5, от 1 до 3) в виде строки
Dim A как целое число
Dim B как целое число
Для А = от 1 до 5
Для B = от 1 до 3

End Sub 

Шаг 4: Теперь выберите лист, с которого нам нужно получить матрицу массива. Вот этот лист Лист1 .

Код:

 Sub VBA_DeclareArray3()

Dim Employee (от 1 до 5, от 1 до 3) в виде строки
Dim A как целое число
Dim B как целое число
Для А = от 1 до 5
Для B = от 1 до 3
Рабочие листы("Лист1").Выбрать

End Sub 

Шаг 5: Теперь выберите значения под переменной, определенной с учетом Сотрудника (A, B) в качестве переменной здесь.

Код:

 Sub VBA_DeclareArray3()
Dim Employee (от 1 до 5, от 1 до 3) в виде строки
Dim A как целое число
Dim B как целое число
Для А = от 1 до 5
Для B = от 1 до 3
Рабочие листы("Лист1"). Выбрать
Сотрудник (A, B) = Ячейки (A, B). Значение

Конец суб 

Шаг 6: Точно так же мы снова выберем лист, куда нам нужно вставить данные из Sheet1 . Здесь лист Sheet2 a и снова рассмотрим ячейки (A, B) в качестве входных данных для Sheet2, который имеет детали из Sheet1.

Код:

 Sub VBA_DeclareArray3()

Dim Employee (от 1 до 5, от 1 до 3) в виде строки
Dim A как целое число
Dim B как целое число
Для А = от 1 до 5
Для B = от 1 до 3
Рабочие листы("Лист1").Выбрать
Сотрудник (A, B) = Ячейки (A, B). Значение
Рабочие листы("Лист2").Выбрать
Ячейки (A, B). Значение = Сотрудник (A, B)

Конец суб 

Шаг 7: Закройте оба цикла For-Next, начатые для переменных A и B, как показано ниже.

Код:

 Sub VBA_DeclareArray3()

Dim Employee (от 1 до 5, от 1 до 3) в виде строки
Dim A как целое число
Dim B как целое число
Для А = от 1 до 5
Для B = от 1 до 3
Рабочие листы("Лист1"). Выбрать
Сотрудник (A, B) = Ячейки (A, B). Значение
Рабочие листы("Лист2").Выбрать
Ячейки (A, B). Значение = Сотрудник (A, B)
Следующий Б
Следующий А

Конец суб 

Шаг 8: Теперь запустите код, нажав клавишу F5 или нажав кнопку воспроизведения. Мы увидим, что данные из Sheet1 теперь загружаются в Sheet2 в том же формате, что и в Sheet1.

Плюсы Excel VBA Declare Array

  • Код легко написать и реализовать.
  • Это работает как копирование данных и вставка их куда угодно в соответствии с нашими потребностями.
  • VBA Declare Array работает как с одномерными, так и с двумерными массивами.

Что нужно помнить

  • Приведенные в статьях примеры лучше всего подходят для начинающих, которые только начали использовать массивы. VBA Declare Array — это гораздо более функциональная переменная, которую можно использовать на практике.
  • VBA Declare Array можно понять глубже, если использовать его чаще.
  • Мы можем использовать Array для создания любой базы данных или матрицы.
  • После этого сохраните файл в формате Excel с поддержкой макросов, чтобы сохранить написанный код.
  • При использовании VBA Declare Array количество переменных не ограничено. Одна переменная может иметь любое количество значений.

Рекомендуемые статьи

Это руководство по объявлению массива в VBA. Здесь мы обсуждаем, как объявить массив в Excel с помощью кода VBA, а также практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть другие наши рекомендуемые статьи —

  1. Номер формата VBA
  2. .

  3. Вариант VBA
  4. Номер формата VBA
  5. Окружающая среда VBA

VBA (Excel) Инициализировать весь массив без зацикливания

Массив можно инициализировать, указав размеры. Например

 Dim myArray(10) как целое число
Dim myArray (от 1 до 10) как целое число
 

Если вы работаете с массивами и делаете это впервые, я бы порекомендовал посетить ВЕБ-САЙТ Чипа Пирсона.

Чем это инициализируется? Например, что, если я хочу инициализировать весь массив значением 13?

Если вы хотите инициализировать массив из 13 элементов, вы можете сделать это двумя способами

 Dim myArray(12) As Integer
Dim myArray (от 1 до 13) как целое число
 

В первом случае нижняя граница массива будет начинаться с 0 , поэтому в массиве можно хранить 13 элементов. Например,

 мой массив (0) = 1
мой массив (1) = 2
'
'
'
мой массив (12) = 13
 

Во втором примере вы указали нижние границы как 1 , поэтому ваш массив начинается с 1 и может снова хранить 13 значений

 myArray(1) = 1
мой массив (2) = 2
'
'
'
мой массив (13) = 13
 

При инициализации массива любым из вышеперечисленных методов значение каждого элемента массива равно 0 . Чтобы проверить это, попробуйте этот код.

 Подвыборка()
    Dim myArray(12) как целое число
    Dim i как целое число
    Для i = LBound(myArray) To UBound(myArray)
        Debug. Print myArray(i)
    Далее я
Конец сабвуфера
 

или

 Подвыборка()
    Dim myArray (от 1 до 13) как целое число
    Dim i как целое число
    Для i = LBound(myArray) To UBound(myArray)
        Debug.Print myArray(i)
    Далее я
Конец сабвуфера
 

ПОСЛЕДУЮЩИЕ КОММЕНТАРИИ

Таким образом, в этом примере каждое значение будет равно 13. Итак, если бы у меня был массив Dim myArray(300) As Integer, все 300 элементов содержали бы значение 13

Как я уже говорил, на мой взгляд, прямого способа добиться желаемого не существует. Сказав это, вот один из способов, который использует функцию рабочего листа Rept для создания повторяющейся строки из 13. Получив эту строку, мы можем использовать SPLIT , используя "," в качестве разделителя. Но обратите внимание, что это создает вариантный массив, но его можно использовать в вычислениях.

Также обратите внимание, что в следующих примерах myArray фактически будет содержать 301 значение, последнее из которых пусто — вам придется это учитывать, дополнительно инициализируя это значение или удаляя последний «,» из sNum перед операцией Split .