Excel присвоить значение ячейке vba excel

Обновлено: 07.07.2024

Вопрос по адресации в Excel: как получить данные из ячейки, адрес которой указан в другой ячейке?
Доброго дня всем. Тут такое дело - в ячейке, к примеру А1 лежит номер столбца, а в ячейке А2 -.

Как присвоить значение ячейки одного листа и поставить ее в другой лист
Подскажите пожалуйста! Как присвоить значение ячейки одного листа и поставить ее в другой лист .

Как присвоить переменной имя ячейки ексель по которой кликнул пользователь
Здравствуйте. Известно только то что пользователь обязательно кликнет по ячейке после того как.

Давайте воспользуемся свойствами и методом об'екта Range
- Value
- Offset
- Select

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

Примечание :
ActiveCell - активная ячейка рассматривается только в качестве 'наглядного пособия' и может быть заменена на любой другой вариант обращения к ячейке.

На самом деле можно обойтись и без явного использования Value, Offset с тем же результатом

P.S. Если Вам нужно перейти к следующей в строке ячейке, то можно использовать :

Если iRow = 256, то получите ошибку (*)

Прощу прощения за опечатку, правильный вариант :
Если iClm = 256, то получите ошибку (*) А если ячейка, в которую надо внести значение, находится на другом листе? Для присваивания в строке 3 ячейке в колонке 2 значения ячейки в колонке 1 можно написать:
Последнее работает даже если установлен стиль ссылок R1C1

- можно обойтись и без явного использования Value с тем же результатом
- имя листа можно заменить на переменную
- вместо Worksheets можно использовать Sheets
- сократить код можно, если использовать With или Set

Предполагается , что:
iRow - это номер строки
iClm - это номер столбца
'Лист1', 'Лист2' - это имя рабочих листов
1, 2 - это индекс (номер) рабочего листа в семействе Worksheets
Лист1, Лист2 - это имя рабочих листов в среде VBA, не путайте с именем рабочего листа, отображаемого на ярлычке

To palva
Прежде чем дополнять чужие ответы, неплохо для начала
внимательно его прочитать

>ActiveCell - активная ячейка рассматривается только в >качестве 'наглядного пособия' и может быть заменена на любой другой >вариант обращения к ячейке.
>На самом деле можно обойтись и без явного использования Value, >Offset с тем же результатом
>ActiveCell = Cells(iRow, iClm)

Cells(3, 2) = Cells(3, 1)
Разве это не клон моего ответа .

А второй вариант в контексте данного случая не может
быть применим, так как в начальных условиях, задано, что известны координаты ячейки, т.е. номер ячейки и номер столбца, а не её адрес.
Хотя этот способ я, как и Вы, тоже использую, но .

>Последнее работает даже если установлен стиль ссылок R1C1

А, что остальные варианты при стиле R1C1 не работают .

> Cells(3, 2) = Cells(3, 1)
> Разве это не клон моего ответа .

Конечно, клон. Я подумал, что это будет понятнее, поскольку является прямым ответом на вопрос топика.

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

Если координаты ячейки вычисляются в макросе или являются переменными, то, конечно, проще использовать Cells. Если координаты ячейки постоянны, то можно заранее преобразовать их в адрес и использовать в макросе более короткую запись. Хотя ячейкам с постоянным адресом логичнее дать имя, например, 'CursEvro' и получать значение так: [CursEvro]

>>Последнее работает даже если установлен стиль ссылок R1C1

>А, что остальные варианты при стиле R1C1 не работают .

Работают, но это написано под впечатлением странной несимметричной ситуации: Когда стиль R1C1 установлен, то можно написать [J10] = [R20C12], то есть рабоают оба способа адресации. А когда стиль R1C1 НЕ установлен, то [J10] работает, а [R20C12] - нет.

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

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

ActiveCell.Value = Cells(3, 1).Value

Примечание :
- ActiveCell - можно заменить на другой способ обращения к ячейке
- Value - можно убрать

После прочтения этого примечания, человек должен сам произвести некоторые действия, для самостоятельного закрепления материала.
т.е. заменить ActiveCell на Cells(1, 1) и убрать Value

> Cells(3, 2) = Cells(3, 1)
А появление подобного кода, может рассматриваться как сомнение в умственных способностях человека.

Кстати, если этот топик читают преподаватели, то они смогут подтвердить наличие подобной методики.

Приплюсовывание числа одной ячейки как минут к другой ячейке
Формат ячеек столбца B - часы:минуты. Задача стоит такая: ввожу в ячейку столбца C от руки число.


Как присвоить значение текущей ячейке в VBA?
Добрый день Подскажите пожалуйста как реализовать такой механизм Private Sub.

Как задать значение для ячейки в зависимости от значения другой ячейки
Здравствуйте! Подскажите, как задать значение для ячейки в зависимости от значения другой ячейки.

Excel: как зафиксировать в определённой ячейке, какие-то меняющиеся значения из другой ячейки?
Имеются следующие условия: Файл Exсelа (2003) завязан с другой программой. Из этой программы идёт.

Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.

В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:

Workbooks ( "Книга2.xlsm" ) . Sheets ( "Лист2" ) . Cells ( 5 , 3 ) Workbooks ( "Книга2.xlsm" ) . Sheets ( "Лист2" ) . Cells ( 5 , "C" )

Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.

Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:

Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».

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

Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.

Обращение к ячейке по индексу

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

Например, индекс ячеек в первой строке равен номеру столбца. Индекс ячеек во второй строке равен количеству ячеек в первой строке (которое равно общему количеству столбцов на листе, зависящему от версии Excel) плюс номер столбца. Индекс ячеек в третьей строке равен количеству ячеек в двух первых строках плюс номер столбца. И так далее.

Для примера, Cells(4) та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel может быть разным количество столбцов и строк на рабочем листе.

По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range(«A1:C3»):

Индексы ячеек в диапазоне Range("A1:C3")

Обращение к ячейке Range("A1:C3").Cells(5) соответствует выражению Range("B2") .

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

Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.

Допустим одной из ячеек присвоено имя – «Итого», тогда обратиться к ней можно – Range("Итого") .

Запись информации в ячейку

Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:

Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.

В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:

Workbooks ( "Книга2.xlsm" ) . Sheets ( "Лист2" ) . Cells ( 5 , 3 ) Workbooks ( "Книга2.xlsm" ) . Sheets ( "Лист2" ) . Cells ( 5 , "C" )

Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.

Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:

Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».

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

Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.

Обращение к ячейке по индексу

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

Например, индекс ячеек в первой строке равен номеру столбца. Индекс ячеек во второй строке равен количеству ячеек в первой строке (которое равно общему количеству столбцов на листе, зависящему от версии Excel) плюс номер столбца. Индекс ячеек в третьей строке равен количеству ячеек в двух первых строках плюс номер столбца. И так далее.

Для примера, Cells(4) та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel может быть разным количество столбцов и строк на рабочем листе.

По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range(«A1:C3»):

Индексы ячеек в диапазоне Range("A1:C3")

Обращение к ячейке Range("A1:C3").Cells(5) соответствует выражению Range("B2") .

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

Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.

Допустим одной из ячеек присвоено имя – «Итого», тогда обратиться к ней можно – Range("Итого") .

Запись информации в ячейку

Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:

Чтобы переменной присвоить диапазон ячеек, она должна быть объявлена как Variant, Object или Range:

Чтобы было понятнее, для чего переменная создана, объявляйте ее как Range.

Присваивается переменной диапазон ячеек с помощью оператора Set:

В выражении Range(Cells(3, 4), Cells(26, 18)) вместо чисел можно использовать переменные.

Для присвоения диапазона ячеек переменной можно использовать встроенное диалоговое окно Application.InputBox, которое позволяет выбрать диапазон на рабочем листе для дальнейшей работы с ним.

Адресация ячеек в диапазоне

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

Индексация ячеек в присвоенном диапазоне осуществляется слева направо и сверху вниз, например, для диапазона размерностью 5х5:

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

Индексация строк и столбцов начинается с левой верхней ячейки. В диапазоне этого примера содержится 5 строк и 5 столбцов. На пересечении 2 строки и 4 столбца находится ячейка с индексом 9. Обратиться к ней можно так:

Читайте также: