Vba excel перейти на ячейку вниз
Переход к заданной ячейке после нажатия клавиши ВВОД в экселе (не вниз,вправо,влево = а именно на иную заданную ячейку)
Как сделать - чтобы после ввода данных в ячейку H2 и нажатия ENTER - автивной ячейкой для ввода становилась ячейка Е3
Я так понимаю - макрос !
Но как правильно написать ?
Переход к заданной ячейке после нажатия клавиши ВВОД в экселе (не вниз,вправо,влево = а именно на иную заданную ячейку)
Как сделать - чтобы после ввода данных в ячейку H2 и нажатия ENTER - автивной ячейкой для ввода становилась ячейка Е3
Я так понимаю - макрос !
Но как правильно написать ? PiRaTe
Как сделать - чтобы после ввода данных в ячейку H2 и нажатия ENTER - автивной ячейкой для ввода становилась ячейка Е3
Я так понимаю - макрос !
Но как правильно написать ? Автор - PiRaTe
Дата добавления - 04.12.2013 в 13:46
Можно в формате ячеек на вкладке "Защита" снять галочку "Защищаемая ячейка" с тех ячеек, по которым надо делать переход. Затем установите защиту на лист, сняв галочку "выделение заблокированных ячеек"
Можно в формате ячеек на вкладке "Защита" снять галочку "Защищаемая ячейка" с тех ячеек, по которым надо делать переход. Затем установите защиту на лист, сняв галочку "выделение заблокированных ячеек" AlexM
Вот например сам файл - посмотрите пожалуйста - может я что то не так делаю ?
Когда ставлю защиту на столбец G - при вводе данных на ячейку (например) I5 и нажатии ENTER
происходит переход в ячейку A6
А нужно чтобы происходил переход в ячейку F6
Вот например сам файл - посмотрите пожалуйста - может я что то не так делаю ?
Когда ставлю защиту на столбец G - при вводе данных на ячейку (например) I5 и нажатии ENTER
происходит переход в ячейку A6
А нужно чтобы происходил переход в ячейку F6 PiRaTe
Когда ставлю защиту на столбец G - при вводе данных на ячейку (например) I5 и нажатии ENTER
происходит переход в ячейку A6
А нужно чтобы происходил переход в ячейку F6 Автор - PiRaTe
Дата добавления - 04.12.2013 в 14:15
AlexM,
Можно что нибудь сделать - или совсем безнадежно все ?
[moder]Да. Похоже, что безнадежно.
Умный - поймет.
AlexM,
Можно что нибудь сделать - или совсем безнадежно все ?
[moder]Да. Похоже, что безнадежно.
Умный - поймет. PiRaTe
Нет я в это не верю !
AlexM, - помогите !
Можете считать меня не умным !
Нет я в это не верю !
AlexM, - помогите !
Можете считать меня не умным ! PiRaTe
Можете считать меня не умным ! Автор - PiRaTe
Дата добавления - 04.12.2013 в 14:27
AlexM,
Нет - Алекс - что то не то получилось !
Когда нажимаю Enter в ячейке J5 - курсор переходит на ячейку G6
Я должен вводит данные в ячейку G6 и нажать Enter - после чего курсор должен переходить на ячейку J6
После того как ввожу данные J6 и Enter - автоматический переход на ячейку G7
И так после ввода данных в ячейке J - курсор переходит автоматом на одну строку ниже в ячейке G
AlexM,
Нет - Алекс - что то не то получилось !
Когда нажимаю Enter в ячейке J5 - курсор переходит на ячейку G6
Я должен вводит данные в ячейку G6 и нажать Enter - после чего курсор должен переходить на ячейку J6
После того как ввожу данные J6 и Enter - автоматический переход на ячейку G7
И так после ввода данных в ячейке J - курсор переходит автоматом на одну строку ниже в ячейке G PiRaTe
Когда нажимаю Enter в ячейке J5 - курсор переходит на ячейку G6
Я должен вводит данные в ячейку G6 и нажать Enter - после чего курсор должен переходить на ячейку J6
После того как ввожу данные J6 и Enter - автоматический переход на ячейку G7
И так после ввода данных в ячейке J - курсор переходит автоматом на одну строку ниже в ячейке G Автор - PiRaTe
Дата добавления - 04.12.2013 в 14:43
В Вашем файле когда я ввожу данные в ячейке J5 курсор переходит на G7 и когда я ввожу данные в ячейку G курсор переходит обратно на ячейку J5 (обратно) вместо того чтобы перейти на вправо
Переход мне нужен только со столбца J на одну ниже но в столбце G
В Вашем файле когда я ввожу данные в ячейке J5 курсор переходит на G7 и когда я ввожу данные в ячейку G курсор переходит обратно на ячейку J5 (обратно) вместо того чтобы перейти на вправо
Переход мне нужен только со столбца J на одну ниже но в столбце G
Помогите, пожалуйста ! Автор - PiRaTe
Дата добавления - 04.12.2013 в 14:48
Все - в норме АЛЕКС = СПАСИБО !
Все - в норме АЛЕКС = СПАСИБО !
ОГРОМНОЕ СПАСИБО ! Автор - PiRaTe
Дата добавления - 04.12.2013 в 15:57
Алекс - а через макрос - вообще это возможно ?
Если да - ХОЧУ ЗНАТЬ КАК .
Алекс - а через макрос - вообще это возможно ?
Если да - ХОЧУ ЗНАТЬ КАК . PiRaTe
Алекс - а через макрос - вообще это возможно ?
Если да - ХОЧУ ЗНАТЬ КАК . Автор - PiRaTe
Дата добавления - 04.12.2013 в 16:03
Возвращает объект Range, представляющий диапазон, смещенный относительно указанного диапазона.
Синтаксис
выражение.Offset (RowOffset, ColumnOffset)
выражение: переменная, представляющая объект Range.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
RowOffset | Необязательный | Variant | Количество строк (положительное, отрицательное или 0 (нулевое)), на которое нужно сместить диапазон. Положительные значения соответствуют смещению вниз, а отрицательные — вверх. Значение по умолчанию равно 0. |
ColumnOffset | Необязательный | Variant | Количество столбцов (положительное, отрицательное или 0 (нулевое)), на который нужно сместить диапазон. Положительные значения соответствуют смещению вправо, а отрицательные — влево. Значение по умолчанию равно 0. |
Пример
В этом примере активируется ячейка, расположенная на три столбца вправо и на три строки вниз от активной ячейки на листе Sheet1.
В этом примере предполагается, что Лист1 содержит таблицу со строкой заголовков. В этом примере выделяется таблица без выделения строки заголовков. Перед запуском примера активная ячейка должна находиться в любом месте таблицы.
Если RowOffset или ColumnOffset равны нулю, их можно опустить.
Выбрать ячейку D1
Выбрать ячейку A5
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Обращение к ячейке по индексу
К ячейке на рабочем листе можно обращаться по ее индексу (порядковому номеру), который считается по расположению ячейки на листе слева-направо и сверху-вниз.
Например, индекс ячеек в первой строке равен номеру столбца. Индекс ячеек во второй строке равен количеству ячеек в первой строке (которое равно общему количеству столбцов на листе, зависящему от версии Excel) плюс номер столбца. Индекс ячеек в третьей строке равен количеству ячеек в двух первых строках плюс номер столбца. И так далее.
Для примера, Cells(4) та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel может быть разным количество столбцов и строк на рабочем листе.
По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range(«A1:C3»):
Обращение к ячейке Range("A1:C3").Cells(5) соответствует выражению Range("B2") .
Обращение к ячейке по имени
Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.
Допустим одной из ячеек присвоено имя – «Итого», тогда обратиться к ней можно – Range("Итого") .
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
Объект Range в VBA Excel представляет диапазон ячеек. Он (объект Range) может описывать любой диапазон, начиная от одной ячейки и заканчивая сразу всеми ячейками рабочего листа.
- Одна ячейка – Range("A1") .
- Девять ячеек – Range("A1:С3") .
- Весь рабочий лист в Excel 2016 – Range("1:1048576") .
Для справки: выражение Range("1:1048576") описывает диапазон с 1 по 1048576 строку, где число 1048576 – это номер последней строки на рабочем листе Excel 2016.
В VBA Excel есть свойство Cells объекта Range, которое позволяет обратиться к одной ячейке в указанном диапазоне (возвращает объект Range в виде одной ячейки). Если в коде используется свойство Cells без указания диапазона, значит оно относится ко всему диапазону активного рабочего листа.
Примеры обращения к одной ячейке:
- Cells(1000) , где 1000 – порядковый номер ячейки на рабочем листе, возвращает ячейку «ALL1».
- Cells(50, 20) , где 50 – номер строки рабочего листа, а 20 – номер столбца, возвращает ячейку «T50».
- Range("A1:C3").Cells(6) , где «A1:C3» – заданный диапазон, а 6 – порядковый номер ячейки в этом диапазоне, возвращает ячейку «C2».
Для справки: порядковый номер ячейки в диапазоне считается построчно слева направо с перемещением к следующей строке сверху вниз.
Подробнее о том, как обратиться к ячейке, смотрите в статье: Ячейки (обращение, запись, чтение, очистка).
В этой статье мы рассмотрим свойства объекта Range, применимые, в том числе, к диапазону, состоящему из одной ячейки.
Еще надо добавить, что свойства и методы объектов отделяются от объектов точкой, как в третьем примере обращения к одной ячейке: Range("A1:C3").Cells(6) .
Свойства ячейки (объекта Range)
Свойство | Описание |
---|---|
Address | Возвращает адрес ячейки (диапазона). |
Borders | Возвращает коллекцию Borders, представляющую границы ячейки (диапазона). Подробнее… |
Cells | Возвращает объект Range, представляющий коллекцию всех ячеек заданного диапазона. Указав номер строки и номер столбца или порядковый номер ячейки в диапазоне, мы получаем конкретную ячейку. Подробнее… |
Characters | Возвращает подстроку в размере указанного количества символов из текста, содержащегося в ячейке. Подробнее… |
Column | Возвращает номер столбца ячейки (первого столбца диапазона). Подробнее… |
ColumnWidth | Возвращает или задает ширину ячейки в пунктах (ширину всех столбцов в указанном диапазоне). |
Comment | Возвращает комментарий, связанный с ячейкой (с левой верхней ячейкой диапазона). |
CurrentRegion | Возвращает прямоугольный диапазон, ограниченный пустыми строками и столбцами. Очень полезное свойство для возвращения рабочей таблицы, а также определения номера последней заполненной строки. |
EntireColumn | Возвращает весь столбец (столбцы), в котором содержится ячейка (диапазон). Диапазон может содержаться и в одном столбце, например, Range("A1:A20") . |
EntireRow | Возвращает всю строку (строки), в которой содержится ячейка (диапазон). Диапазон может содержаться и в одной строке, например, Range("A2:H2") . |
Font | Возвращает объект Font, представляющий шрифт указанного объекта. Подробнее о цвете шрифта… | HorizontalAlignment | Возвращает или задает значение горизонтального выравнивания содержимого ячейки (диапазона). Подробнее… |
Interior | Возвращает объект Interior, представляющий внутреннюю область ячейки (диапазона). Применяется, главным образом, для возвращения или назначения цвета заливки (фона) ячейки (диапазона). Подробнее… |
Name | Возвращает или задает имя ячейки (диапазона). |
NumberFormat | Возвращает или задает код числового формата для ячейки (диапазона). Примеры кодов числовых форматов можно посмотреть, открыв для любой ячейки на рабочем листе Excel диалоговое окно «Формат ячеек», на вкладке «(все форматы)». Свойство NumberFormat диапазона возвращает значение NULL, за исключением тех случаев, когда все ячейки в диапазоне имеют одинаковый числовой формат. Если нужно присвоить ячейке текстовый формат, записывается так: Range("A1").NumberFormat = "@" . |
Offset | Возвращает объект Range, смещенный относительно первоначального диапазона на указанное количество строк и столбцов. Подробнее… |
Resize | Изменяет размер первоначального диапазона до указанного количества строк и столбцов. Строки добавляются или удаляются снизу, столбцы – справа. Подробнее… |
Row | Возвращает номер строки ячейки (первой строки диапазона). Подробнее… |
RowHeight | Возвращает или задает высоту ячейки в пунктах (высоту всех строк в указанном диапазоне). |
Text | Возвращает форматированный текст, содержащийся в ячейке. Свойство Text диапазона возвращает значение NULL, за исключением тех случаев, когда все ячейки в диапазоне имеют одинаковое содержимое и один формат. Предназначено только для чтения. |
Value | Возвращает или задает значение ячейки, в том числе с отображением значений в формате Currency и Date. Тип данных Variant. Value является свойством ячейки по умолчанию, поэтому в коде его можно не указывать. |
Value2 | Возвращает или задает значение ячейки. Тип данных Variant. Значения в формате Currency и Date будут отображены в виде чисел с типом данных Double. | VerticalAlignment | Возвращает или задает значение вертикального выравнивания содержимого ячейки (диапазона). Подробнее… |
В таблице представлены не все свойства объекта Range. С полным списком вы можете ознакомиться не сайте разработчика.
Простые примеры для начинающих
Вы можете скопировать примеры кода VBA Excel в стандартный модуль и запустить их на выполнение. Как создать стандартный модуль и запустить процедуру на выполнение, смотрите в статье VBA Excel. Начинаем программировать с нуля.
Учтите, что в одном программном модуле у всех процедур должны быть разные имена. Если вы уже копировали в модуль подпрограммы с именами Primer1, Primer2 и т.д., удалите их или создайте еще один стандартный модуль.
Форматирование ячеек
Заливка ячейки фоном, изменение высоты строки, запись в ячейки текста, автоподбор ширины столбца, выравнивание текста в ячейке и выделение его цветом, добавление границ к ячейкам, очистка содержимого и форматирования ячеек.
Если вы запустите эту процедуру, информационное окно MsgBox будет прерывать выполнение программы и сообщать о том, что произойдет дальше, после его закрытия.
Люди добрые, подскажите, как перейти на ячейку вправо(или влево)
Делаю через
Стр = ActiveCell.Row
Кол = ActiveCell.Column (в Watch эта переменная - число, поэтому
потом после ее подстановки в Range(Кол+1, Стр).Select комп ругается на синтаксис.
Переход по такому же принципу по строкам проходит на ура, а вот со столбцами проблема.
Извиняйте, если туповат.
Люди добрые, подскажите, как перейти на ячейку вправо(или влево)
Делаю через
Стр = ActiveCell.Row
Кол = ActiveCell.Column (в Watch эта переменная - число, поэтому
потом после ее подстановки в Range(Кол+1, Стр).Select комп ругается на синтаксис.
Переход по такому же принципу по строкам проходит на ура, а вот со столбцами проблема.
Извиняйте, если туповат. Ded George
activecell.offset(1,0) - смещение вниз на одну строку
activecell.offset(0,1) - смещение вправо на один столбец
activecell.offset(-1,0) - смещение вверх на одну строку
activecell.offset(0,-1) - смещение влево на один столбец
activecell.offset(1,0) - смещение вниз на одну строку
activecell.offset(0,1) - смещение вправо на один столбец
activecell.offset(-1,0) - смещение вверх на одну строку
activecell.offset(0,-1) - смещение влево на один столбец
activecell.offset(1,0) - смещение вниз на одну строку
activecell.offset(0,1) - смещение вправо на один столбец
activecell.offset(-1,0) - смещение вверх на одну строку
activecell.offset(0,-1) - смещение влево на один столбец
Спасибо всем, кто откликнулся.
Особый респект RAN.
Cells(Стр, Кол+1).Select - (вместо Range. ) - ЭТО ТО, ЧТО НАДО!
Кстати, какая разница между Cells и Range?
Спасибо всем, кто откликнулся.
Особый респект RAN.
Cells(Стр, Кол+1).Select - (вместо Range. ) - ЭТО ТО, ЧТО НАДО!
Кстати, какая разница между Cells и Range? Ded George
А хелп слабО почитать?
Range - это свойство (property) некоего объекта, возвращающее некий диапазон (возможно, мультинабор) ячеек. Параметром является ИМЯ диапазона в нотации макроязыка (как в формулах листа). Или два параметра - задающие углы диапазона. В нотации макроязыка. Что аналогично использованию параметра-объекта в коде VBA.
Cells - это свойство только листа или диапазона (а Application.Cells=ActiveSheet.Cells), позволяющее обратиться к диапазону ячеек именно этого объекта (листа или диапазона) по индексу строки/столбца. Cells позволяет обратиться к ячейке по индексу, НО - только потому, что таково дефолтное свойство диапазона: .Cells(x,y)==.Range.Item(x,y). С другой стороны, можно вызвать .Range(.Cells(. )[,.Cells(. )]) - опять же, только потому, что Cells() возвращает именно объект-диапазон.
Ну и не забывайте, что использование Range и Cells без квалификатора принадлежности объекту - требует очень сильного самоконтроля и отличного знания объектной модели (про что обычно забывают многие "пейсатели" руководств) С другой стороны, точное понимание взаимодействия свойств объектной модели - это один из признаков хорошего программера на любом объектном языке.
А хелп слабО почитать?
Range - это свойство (property) некоего объекта, возвращающее некий диапазон (возможно, мультинабор) ячеек. Параметром является ИМЯ диапазона в нотации макроязыка (как в формулах листа). Или два параметра - задающие углы диапазона. В нотации макроязыка. Что аналогично использованию параметра-объекта в коде VBA.
Cells - это свойство только листа или диапазона (а Application.Cells=ActiveSheet.Cells), позволяющее обратиться к диапазону ячеек именно этого объекта (листа или диапазона) по индексу строки/столбца. Cells позволяет обратиться к ячейке по индексу, НО - только потому, что таково дефолтное свойство диапазона: .Cells(x,y)==.Range.Item(x,y). С другой стороны, можно вызвать .Range(.Cells(. )[,.Cells(. )]) - опять же, только потому, что Cells() возвращает именно объект-диапазон.
Ну и не забывайте, что использование Range и Cells без квалификатора принадлежности объекту - требует очень сильного самоконтроля и отличного знания объектной модели (про что обычно забывают многие "пейсатели" руководств) С другой стороны, точное понимание взаимодействия свойств объектной модели - это один из признаков хорошего программера на любом объектном языке. AndreTM
А хелп слабО почитать?
Range - это свойство (property) некоего объекта, возвращающее некий диапазон (возможно, мультинабор) ячеек. Параметром является ИМЯ диапазона в нотации макроязыка (как в формулах листа). Или два параметра - задающие углы диапазона. В нотации макроязыка. Что аналогично использованию параметра-объекта в коде VBA.
Cells - это свойство только листа или диапазона (а Application.Cells=ActiveSheet.Cells), позволяющее обратиться к диапазону ячеек именно этого объекта (листа или диапазона) по индексу строки/столбца. Cells позволяет обратиться к ячейке по индексу, НО - только потому, что таково дефолтное свойство диапазона: .Cells(x,y)==.Range.Item(x,y). С другой стороны, можно вызвать .Range(.Cells(. )[,.Cells(. )]) - опять же, только потому, что Cells() возвращает именно объект-диапазон.
Ну и не забывайте, что использование Range и Cells без квалификатора принадлежности объекту - требует очень сильного самоконтроля и отличного знания объектной модели (про что обычно забывают многие "пейсатели" руководств) С другой стороны, точное понимание взаимодействия свойств объектной модели - это один из признаков хорошего программера на любом объектном языке. Автор - AndreTM
Дата добавления - 13.11.2014 в 20:14
Читайте также: