Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Excel vba адресация ячеек

Вопрос 19. VBA. Адресация ячеек в Excel. Ссылка на одиночную ячейку.

Адресация ячеек в экселе.

в эксель ячейка строка столбец и диапазон ячеек рассматривается как один обьект Range иногда для обозначения ячейки используется cells для ссылки используется два формата. формат а1-обычный. ссылка состояит из имени столбца и номера строки, например д4

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

R1 и C1 в данном формате R задает номер строки C номер столбца, ссылка является абсотной. для указания относительной ссылки, задается смещение по отношению к активной ячейке, смещение указывается в квадратных скобках, знак указывает направление смещения.

Ссылка на одиночную ячейку имеет вид [ обьект.] Range

например workSheets(лист1) . Range(» A7″)=34

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

например, для ввода числа 34 неоходима команда sheets(1). cells(7,1). Value=34

номер строки и столбца могут задаваться с помощью переменных

для этого напишем процедуру с неявным обьявлением переменных где j- номер строки i-номер столбца.

Операторы, выражения и операции

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

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

1.безальтернативную-IF условие THEN

2 альтернативную -IF условие ELSE

Если условие принимает значение истина, то выполняется команды оператор 1

если условие принимает значение лож, то выполняются команды оператор2

Вопрос №20 VBA. Условный оператор. Примеры.

Вопрос №21. VBA. Циклы. Примеры.

Операторы циклов.
цикл со счетчиком
For Счётчик цикла=НачальноеЗначение

To
КонечноеЗначение [Step Шаг]

Операторы
[Exit For]
Next [счетчик цикла]

Цикл-это группа операторов, которые прогрмамма многократно выполняет

В вба существует два основных типов цикла:
-циклы со счетчиком
-циклы с условием

Step(шаг)-число, задающее шаг цикла,т.е. значение на которое увеличивается или уменьшается значение счетчика на каждом шаге. это число может быть отрицательным(в этом случае шаг будет уменьшаться), если слово step отсутствует, то значение шага равно 1.
Exit For-оператор досрочного выхода из цикла необязательный
Next-окончание цикла

Пример 1. Просуммировать четные числа натурального ряда до50 включительно, сумму плместить в ячейку рабочего листа excel

Sub sum()
Dim f As Integer, sum As Integer sum=0
For f=2 To 50 Step 2
sum=sum+f
Next
Range(«A1»).Value=sum
End sub

Главной особенностью циклов с условием является условие, которое может принимать значение истины или лжи.
В вба есть 2 основных типа циклов с условием:
-Do While. Loop (цикл с предусловием)
-Do Until..Loop (цикл с постусловием)

Цикл с предусловием
Do While/Until выражение
Операторы
[Exit do]
Loop
Цикл с постусловием
Вo
операторы
[Exit Do]
Loop While/Until выражение

В первом случае условие задается в операторе начала цикла, во втором — в операторе конца цикла

Do, Loop— ключевые слова, обозначающие начало и конец цикла
While, Until-ключевые слова определяющие тип цикла

Цикл Do While выполняется до тех пор, пока условие имеет значение истинf
Цикл Do Until выполняется до тех пор, пока условие имеет значение ложь

Exit do-принудительный выход из цикла

Читать еще:  Vba excel сегодняшняя дата

Пример 2. Написать программу, суммирующую на рабочем листе Excel. Выпуск продукции значения ежедневных прибылей из столбца D и помещающую результат в отдельную ячейку с поясняющей надписью, как показано на рисунке.

BCDEFG
Выпуск молока, проданного за месяц 2004Итоговая прибыль
Дата изготовления продукцииИзготовлено продукцииПрибыль от реализации продукцииРасход молока
02.03.04345,42
15.03.043231,9

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

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

Sub total()
i=3
Sum=0
Do while Cells (I,4).Value<>””

Объявили переменную для номера строки (i=3). Первоначальное значение суммы=0. Выполняется цикл, пока не встретится пустая ячейка в столбце D.

Суммируются ячейки столбца D. Увеличиваем переменную смещением строк для изменения адресов ячеек.

Папиллярные узоры пальцев рук — маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Excel vba адресация ячеек

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub отработка_файла_3()

Dim strAddress As String

‘ активируем файл ошибок
Windows(«ошибки.xlsx»).Activate

s = Cells(1048576, «A»).End(xlUp).Row

‘создание массива и занесение в него данных из таблицы
Dim a()
a = Range(«G» & 2 & «:» & «G» & s).Value

For i = 1 To s
Dim cell As Range: Set cell = Range(«C2:C20000»).Find(a(i, 1), , xlValues)
If Not cell Is Nothing Then cell.EntireRow.Interior.Color = 65535
If Not cell Is Nothing Then strAddress = cell.Address
Next i

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub отработка_файла_3()

Dim strAddress As String

‘ активируем файл ошибок
Windows(«ошибки.xlsx»).Activate

s = Cells(1048576, «A»).End(xlUp).Row

‘создание массива и занесение в него данных из таблицы
Dim a()
a = Range(«G» & 2 & «:» & «G» & s).Value

For i = 1 To s
Dim cell As Range: Set cell = Range(«C2:C20000»).Find(a(i, 1), , xlValues)
If Not cell Is Nothing Then cell.EntireRow.Interior.Color = 65535
If Not cell Is Nothing Then strAddress = cell.Address
Next i

Киви-кошелек: 9166309108
Яндекс-деньги: 410014131888288

Ответить

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub отработка_файла_3()

Dim strAddress As String

‘ активируем файл ошибок
Windows(«ошибки.xlsx»).Activate

s = Cells(1048576, «A»).End(xlUp).Row

‘создание массива и занесение в него данных из таблицы
Dim a()
a = Range(«G» & 2 & «:» & «G» & s).Value

For i = 1 To s
Dim cell As Range: Set cell = Range(«C2:C20000»).Find(a(i, 1), , xlValues)
If Not cell Is Nothing Then cell.EntireRow.Interior.Color = 65535
If Not cell Is Nothing Then strAddress = cell.Address
Next i

123mark123Дата: Среда, 14.12.2016, 22:35 | Сообщение № 3

александр

Ответить

KarataevДата: Среда, 14.12.2016, 22:39 | Сообщение № 4

В Вашем случае нумерация с 1.

В Вашем случае нумерация с 1.

Киви-кошелек: 9166309108
Яндекс-деньги: 410014131888288

В Вашем случае нумерация с 1.

123mark123Дата: Среда, 14.12.2016, 22:50 | Сообщение № 5

александр

Ответить

KarataevДата: Среда, 14.12.2016, 23:07 | Сообщение № 6

Киви-кошелек: 9166309108
Яндекс-деньги: 410014131888288

123mark123Дата: Четверг, 15.12.2016, 23:28 | Сообщение № 7

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub отработка_файла_3()

Dim strAddress As String
‘ активируем файл ошибок
Windows(«ошибки.xlsx»).Activate

s = Cells(1048576, «A»).End(xlUp).Row

‘создание массива и занесение в него данных из таблицы
Dim a()
a = Range(«G» & 2 & «:» & «G» & s).Value

For i = 1 To s — 1

Dim cell As Range: Set cell = Range(«C2:C20000»).Find(a(i, 1), , xlValues)
If Not cell Is Nothing Then strAddress = cell.Address

x = ActiveCell.Row
Selection.End(xlDown).Select
y = ActiveCell.Row — 1
ActiveSheet.Range(«A» & x & «:» & «G» & y).Interior.Color = 65535

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub отработка_файла_3()

Dim strAddress As String
‘ активируем файл ошибок
Windows(«ошибки.xlsx»).Activate

s = Cells(1048576, «A»).End(xlUp).Row

‘создание массива и занесение в него данных из таблицы
Dim a()
a = Range(«G» & 2 & «:» & «G» & s).Value

For i = 1 To s — 1

Dim cell As Range: Set cell = Range(«C2:C20000»).Find(a(i, 1), , xlValues)
If Not cell Is Nothing Then strAddress = cell.Address

x = ActiveCell.Row
Selection.End(xlDown).Select
y = ActiveCell.Row — 1
ActiveSheet.Range(«A» & x & «:» & «G» & y).Interior.Color = 65535

Сообщение В итоге

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub отработка_файла_3()

Dim strAddress As String
‘ активируем файл ошибок
Windows(«ошибки.xlsx»).Activate

s = Cells(1048576, «A»).End(xlUp).Row

‘создание массива и занесение в него данных из таблицы
Dim a()
a = Range(«G» & 2 & «:» & «G» & s).Value

For i = 1 To s — 1

Dim cell As Range: Set cell = Range(«C2:C20000»).Find(a(i, 1), , xlValues)
If Not cell Is Nothing Then strAddress = cell.Address

x = ActiveCell.Row
Selection.End(xlDown).Select
y = ActiveCell.Row — 1
ActiveSheet.Range(«A» & x & «:» & «G» & y).Interior.Color = 65535

Все работает Автор — 123mark123
Дата добавления — 15.12.2016 в 23:28

KarataevДата: Четверг, 15.12.2016, 23:40 | Сообщение № 8

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub отработка_файла_3()

‘ активируем файл ошибок
Windows(«ошибки.xlsx»).Activate

s = Cells(1048576, «A»).End(xlUp).Row

‘создание массива и занесение в него данных из таблицы
Dim a()
a = Range(«G» & 2 & «:» & «G» & s).Value

For i = 1 To s — 1

Dim cell As Range: Set cell = Range(«C2:C20000»).Find(a(i, 1), , xlValues)

If Not cell Is Nothing Then

x = ActiveCell.Row
Selection.End(xlDown).Select
y = ActiveCell.Row — 1
ActiveSheet.Range(«A» & x & «:» & «G» & y).Interior.Color = 65535
End If

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub отработка_файла_3()

‘ активируем файл ошибок
Windows(«ошибки.xlsx»).Activate

s = Cells(1048576, «A»).End(xlUp).Row

‘создание массива и занесение в него данных из таблицы
Dim a()
a = Range(«G» & 2 & «:» & «G» & s).Value

For i = 1 To s — 1

Dim cell As Range: Set cell = Range(«C2:C20000»).Find(a(i, 1), , xlValues)

If Not cell Is Nothing Then

x = ActiveCell.Row
Selection.End(xlDown).Select
y = ActiveCell.Row — 1
ActiveSheet.Range(«A» & x & «:» & «G» & y).Interior.Color = 65535
End If

Киви-кошелек: 9166309108
Яндекс-деньги: 410014131888288

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Sub отработка_файла_3()

‘ активируем файл ошибок
Windows(«ошибки.xlsx»).Activate

s = Cells(1048576, «A»).End(xlUp).Row

‘создание массива и занесение в него данных из таблицы
Dim a()
a = Range(«G» & 2 & «:» & «G» & s).Value

For i = 1 To s — 1

Dim cell As Range: Set cell = Range(«C2:C20000»).Find(a(i, 1), , xlValues)

Чтение и запись значения ячейки в VBA

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

Обращение к конкретной ячейке

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

Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:

  • С помощью Range
  • С помощью Cells

Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1

Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:

Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе

Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).

Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.

Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.

Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.

Чтение значения из ячейки

Есть 3 способа получения значения ячейки, каждый из которых имеет свои особенности:

  • Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
  • Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
  • Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».

По-умолчанию, если при обращении к ячейке не указывать способ чтения значения, то используется способ Value.

Пример 5: В ячейке A1 активного листа находится дата 01.03.2018. Для ячейки выбран формат «14 марта 2001 г.». Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.

Пример 6: В ячейке С1 активного листа находится значение 123,456789. Для ячейки выбран формат «Денежный» с 3 десятичными знаками. Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.

При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.

Пример 7: В ячейке B1 активного листа находится текст. Прочитать значение ячейки в переменную.

Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.

Запись значения в ячейку

Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.

Пример 8: Записать в ячейку A1 активного листа значение 123,45

Все три строки запишут в A1 одно и то же значение.

Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года

В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.

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

Ссылка на основную публикацию
Adblock
detector