Vba excel ячейка за экраном

Метод Show объекта Range, использующийся в VBA Excel для прокрутки первой ячейки заданного диапазона в область видимого экрана. Синтаксис, примеры.

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

Если заданная ячейка (первая ячейка заданного диапазона) уже находится в пределах видимого экрана, прокрутка не произойдет.

Синтаксис метода Range.Show

Expression – выражение (переменная), представляющее объект Range.

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

Примеры

Пример 1
Отображение первой ячейки диапазона по центру экрана:

Sub Primer1()

    With Range(Cells(50, 50), Cells(60, 55))

        .Interior.Color = vbGreen

        .Show

    End With

End Sub

Результат выполнения кода:

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

Sub Primer2()

Dim r As Long, c As Long

    With Range(Cells(50, 50), Cells(60, 55))

        .Interior.Color = vbGreen

        r = (.Cells(1).Row + .Cells(.Cells.Count).Row) 2

        c = (.Cells(1).Column + .Cells(.Cells.Count).Column) 2

    End With

    Cells(r, c).Show

End Sub

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

После этого вручную прокрутите рабочий лист так, чтобы зеленый диапазон скрылся из вида (должна быть скрыта ячейка Cells(r, c)). Причем прокрутку сделайте как по строкам, так и по столбцам. После запуска кода из второго примера зеленый диапазон займет центральное положение на видимом экране:

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


Группа: Пользователи

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Доброго времени суток!
Созданный мною макрос обрабатывает длинный список, около 1500 строк, и меняет значение одной из ячеек в соответствии с заданными условиями. При этом ячейка выделяется — становится активной. Всё чудесно работает. Не смог решить на вид простую задачу: автоматический скролинг на активную ячейку (строку). Практически, мне надо методами vba, выполнить команду сочетания клавиш EXCEL: («Ctrl+Back Space»).

Причём команда
ActiveCell.Activate
вовсе не перемещает экран на активную ячейку.
Адрес ячейки у меня определяется примерно так: Cells(491, СтолбецNum).

Подскажите варианты решения этой задачи. Заранее благодарен!

0 / 0 / 0

Регистрация: 27.04.2009

Сообщений: 265

1

Выведение активной ячейки на экран

20.06.2011, 12:22. Показов 7094. Ответов 5


Студворк — интернет-сервис помощи студентам

На листе 30 000 строк. Путем Cells(i,3).Select нужная ячейка выделяется, но не факт,что она появится на видимом экране. То есть, выделенная ячейка остается вне зоны видимости, вверху или внизу экрана. Причем происходит это через раз. Иногда выскакивает на видимую часть экрана, иногда нет.
Как боротся?



0



Терминатор

20.06.2011, 13:35

2

Здравствуй Штурман, давненько не слышал тебя.
У меня похожая ситуация была. Заменил на Activate, и всё прошло.Правда.

0 / 0 / 0

Регистрация: 27.04.2009

Сообщений: 265

20.06.2011, 13:37

 [ТС]

3

Логично. Счас попробую. Благодарю.



0



Gleb1

1 / 1 / 0

Регистрация: 19.05.2011

Сообщений: 80

20.06.2011, 14:52

4

Можно сделать принудительное появление ячейки на экране:
This example selects cell A154 on Sheet1 and then scrolls through the worksheet to display the range.

Visual Basic
1
2
Application.Goto Reference:=Worksheets('Sheet1').Range('A154'), _
    scroll:=True



0



Сумрак

21.06.2011, 18:23

5

Activate хватит

Штурмaн

0 / 0 / 0

Регистрация: 27.04.2009

Сообщений: 265

05.07.2011, 17:48

 [ТС]

6

Прошу прощения за долгое молчание,замотался. Все же пришлось воспользоватся советом Gleb1 .

Visual Basic
1
2
3
4
5
6
7
8
Cells.Find(What:=поиск, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
' ячейку у меня в большинстве случаях активировал,но на экран не выводил. После добавления
 
à = ActiveCell.Row
Application.Goto Reference:=Sheets('íàëè÷èå').Range('A' & à), _
Scroll:=True

все стало работать прекрасно.

Всем спасибо.



0



VovaK Дата: Четверг, 03.11.2011, 23:19 | Сообщение № 1

Не стал заморачиваться в сторону совместимости (тем более, что ZVI уже написал — лучше не сделаешь, см. здесь http://www.planetaexcel.ru/forum.php?thread_id=9786 ) и сваял средствами VBA вполне понятный алгоритм расчета координат позицирования формы на экране рядом с ячейкой.

Для версий ниже 12 позицирует форму в средине экрана.

Не стал заморачиваться в сторону совместимости (тем более, что ZVI уже написал — лучше не сделаешь, см. здесь http://www.planetaexcel.ru/forum.php?thread_id=9786 ) и сваял средствами VBA вполне понятный алгоритм расчета координат позицирования формы на экране рядом с ячейкой.

Для версий ниже 12 позицирует форму в средине экрана. VovaK

С уважением, Владимир.

Сообщение Не стал заморачиваться в сторону совместимости (тем более, что ZVI уже написал — лучше не сделаешь, см. здесь http://www.planetaexcel.ru/forum.php?thread_id=9786 ) и сваял средствами VBA вполне понятный алгоритм расчета координат позицирования формы на экране рядом с ячейкой.

Для версий ниже 12 позицирует форму в средине экрана. Автор — VovaK
Дата добавления — 03.11.2011 в 23:19

nerv Дата: Пятница, 04.11.2011, 09:05 | Сообщение № 2

Владимир, я посмотрел, но ни чего не понял
В свою очередь, хотел бы попросить у Вас скриншот, как ведет себя форма (позиционируется) в 2007 при следующем раскладе (при масштабе 100):

Учитывается (по крайне мере в 2003):
+ положение приложения (свернуто в окно/максимизировано)
+ положение активного окна (свернуто в окно/максимизировано)
+ панели инструментов сверху
+ панели инструментов слева
+ ширина активной ячейки (объединенной в том числе)
+ прокрутка листа

Не учитывается:
— закрепление областей («спасибо» VisibleRange)
— разделение областей («спасибо» VisibleRange)
— высота активной ячейки
— панели справа
— панели снизу

Как это выглядит у меня см. файл

Владимир, я посмотрел, но ни чего не понял
В свою очередь, хотел бы попросить у Вас скриншот, как ведет себя форма (позиционируется) в 2007 при следующем раскладе (при масштабе 100):

Учитывается (по крайне мере в 2003):
+ положение приложения (свернуто в окно/максимизировано)
+ положение активного окна (свернуто в окно/максимизировано)
+ панели инструментов сверху
+ панели инструментов слева
+ ширина активной ячейки (объединенной в том числе)
+ прокрутка листа

Не учитывается:
— закрепление областей («спасибо» VisibleRange)
— разделение областей («спасибо» VisibleRange)
— высота активной ячейки
— панели справа
— панели снизу

Как это выглядит у меня см. файл nerv

Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина — самый громкий звук

YM 41001156540584 / WM WMR R21924176233

Сообщение Владимир, я посмотрел, но ни чего не понял
В свою очередь, хотел бы попросить у Вас скриншот, как ведет себя форма (позиционируется) в 2007 при следующем раскладе (при масштабе 100):

Учитывается (по крайне мере в 2003):
+ положение приложения (свернуто в окно/максимизировано)
+ положение активного окна (свернуто в окно/максимизировано)
+ панели инструментов сверху
+ панели инструментов слева
+ ширина активной ячейки (объединенной в том числе)
+ прокрутка листа

Не учитывается:
— закрепление областей («спасибо» VisibleRange)
— разделение областей («спасибо» VisibleRange)
— высота активной ячейки
— панели справа
— панели снизу

Как это выглядит у меня см. файл Автор — nerv
Дата добавления — 04.11.2011 в 09:05

VovaK Дата: Пятница, 04.11.2011, 11:40 | Сообщение № 3

Саш, ну как я скиршот покажу — фотошопом? Alt_printScrin копирует только форму.
Попробовал Ваш код — центрит на экране хорошо.

Саша не заморачивайтесь для 2003 без Win Api просто не обойтись потому как возможно оформление, когда меню будут по левому краю в несколко рядов. А ширину этих commandbars и их количество через VBA не определить.

В 2007 много проще, по крайней мере по левому краю.

Саш, ну как я скиршот покажу — фотошопом? Alt_printScrin копирует только форму.
Попробовал Ваш код — центрит на экране хорошо.

Саша не заморачивайтесь для 2003 без Win Api просто не обойтись потому как возможно оформление, когда меню будут по левому краю в несколко рядов. А ширину этих commandbars и их количество через VBA не определить.

В 2007 много проще, по крайней мере по левому краю. VovaK

Сообщение Саш, ну как я скиршот покажу — фотошопом? Alt_printScrin копирует только форму.
Попробовал Ваш код — центрит на экране хорошо.

Саша не заморачивайтесь для 2003 без Win Api просто не обойтись потому как возможно оформление, когда меню будут по левому краю в несколко рядов. А ширину этих commandbars и их количество через VBA не определить.

В 2007 много проще, по крайней мере по левому краю. Автор — VovaK
Дата добавления — 04.11.2011 в 11:40

Источник

Vba excel ячейка за экраном

Как отобразить активную ячейку в верхнем левом углу экрана Excel?

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

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

1. Щелкните ячейку, которую нужно отобразить в левом верхнем углу, и нажмите Alt + F11 ключи для включения Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, скопируйте и вставьте приведенный ниже код в пустой скрипт.

VBA: прокрутить активную ячейку в верхний левый угол

3. Press F5 key to run the code, then the active cell has been gone to top left of screen.

Источник

VBA в Excel Объект Excel.Range и программная работа с ячейками средствами VBA

10.6 Объект Range, его свойства и методы

Объект Excel.Range, программная работа с ячейками и диапазонами (наборами) ячеек средствами VBA, создание объекта Excel.Range, свойства, методы и события объекта Excel.Range

Пожалуй, наиболее часто используемый объект в иерархии объектной модели Excel — это объект Range. Этот объект может представлять одну ячейку, несколько ячеек (в том числе несмежные ячейки или наборы несмежных ячеек) или целый лист. Если в Word вы могли для ввода данных использовать как объект Range, так и объект Selection, то в Excel все сводится к объекту Range:

  • если вам нужно ввести данные в ячейку или отформатировать ее, то вы должны получить объект Range, представляющий эту ячейку;
  • если вы хотите сделать что-то с выделенными вами ячейками, вам необходимо получить объект Range, представляющий выделение;
  • если вам нужно просто что-то сделать с группой ячеек, первое ваше действие — опять-таки получить объект Range, представляющий эту группу ячеек.

В Microsoft Knowledge Base есть статья под номером 291308, в котором описываются 22 способа получения объекта Range в Excel. Вряд ли вы будете пользоваться всеми эти способами. Мы рассмотрим только самые распространенные:

  • самый простой и очевидный способ — воспользоваться свойством Range. Это свойство предусмотрено для объектов Application, Worksheet и самого объекта Range (если вы решили создать новый диапазон на основе уже существующего). Например, получить ссылку на объект Range, представляющий ячейку A1, можно так:

Dim oRange As Range

Set oRange = Worksheets(«Лист1»).Range(«A1»)

А на диапазон ячеек с A1 по D10 — так:

Dim oRange As Range

Set oRange = Worksheets(«Лист1»).Range(«A1:D10»)

С применением свойства Range самого объекта Range нужно быть очень осторожным. Дело в том, что Excel создает на основе объекта Range виртуальный лист со своей собственной нумерацией. Поэтому такой код:

Set oRange1 = Worksheets(«Лист1»).Range(«C1»)

Set oRange2 = oRange1.Range(«B1»)

пропишет значение 20 не в ячейку B1, как можно было понять из кода, а в ячейку D1 (то есть B1 по отношению к виртуальному листу, начинающемуся с C1).

  • второй способ — воспользоваться свойством Cells. Возможностей у этого свойства меньше — мы можем вернуть диапазон, состоящий только из одной ячейки. Зато мы можем использовать более удобный синтаксис (с точки зрения передачи переменных, перехода в любую сторону на любое количество ячеек и т.п.). Например, для получения ссылки на ячейку D1 можно использовать код вида:

Dim oRange As Range

Set oRange = Worksheets(«Лист1»).Cells(1, 4)

Чтобы получить диапазон, состоящий из нескольких ячеек, удобно применять свойства Range и Cells вместе:

Set oRange = Range(Cells(1, 1), Cells(5, 3))

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

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

oRange.Value = «Мое значение»

Поскольку объект Range с функциональной точки зрения очень важен, то свойств и методов у него очень много (и для комфортной работы в Excel их нужно знать). Ниже представлены некоторые самые употребимые свойства:

  • Address — позволяет вернуть адрес текущего диапазона, например, для предыдущего примера вернется $A$1:$C$5. Этому свойству можно передать много параметров — для определения стиля ссылки, абсолютного или относительного адреса для столбцов и строк, по отношению к чему этот адрес будет относительным и т.п. Свойство доступно только для чтения. AddressLocal — то же самое, но с поправкой на особенности локализованных версий Excel.

На практике встречается множество ситуаций, когда адрес ячейки нужно разобрать на части и вернуть из него имя столбца или номер строки. Это очень просто сделать при помощи строковых функций — спасибо знакам доллара. Например, имя столбца для объекта oRange, представляющего одну ячейку, можно вернуть так:

sColumnName = Mid(oRange.Address, 2, (InStr(2, oRange.Address, «$») — 2))

sRowNumber = Mid(oRange.Address, (InStr(2, oRange.Address, «$») + 1))

На первый взгляд кажется сложным, но на самом деле все очень просто — для имени столбца мы просто берем все, что у нас находится между первым знаком доллара (он у нас всегда первый символ) и вторым, а для номера строки бы берем все, что у нас находится после второго знака доллара. Найти этот второй знак доллара можно при помощи встроенной функции InStr(), а взять нужное количество символов начиная с какого либо проще всего при помощи встроенной функции Mid().

  • AllowEdit — это свойство, доступное только для чтения, позволяет определить, сможет ли пользователь править данную ячейку (набор ячеек) на защищенном листе. Используется для проверок.
  • Areas — свойство исключительно важное. Дело в том, что, как уже говорилось, объект Range может состоять из несмежных наборов ячеек. Многие методы применительно к таким диапазонам ведут себя совершенно непредсказуемо или просто возвращают ошибки. Свойство Areas позволяет разбить подобные нестандартные диапазоны на набор стандартных. Созданные таким образом объекты Range будут помещены в коллекцию Areas. Это свойство можно использовать и для проверки «нестандартности» диапазона:

If Selection.Areas.Count > 1 Then

Debug.Print «Диапазон с несмежными областями»

  • Borders — возможность получить ссылку на коллекцию Borders, при помощи которой можно управлять рамками для нашего диапазона.
  • Cells — это свойство есть и для объекта Range. Работает оно точно так же, за исключением того, что опять-таки используется своя собственная виртуальная адресация на основе диапазона:

Dim oRange, oRange2 As Range

Set oRange = Range(Cells(2, 2), Cells(5, 3))

Set oRange2 = oRange.Cells(1, 1) ‘Вместо A1 получаем ссылку на B2

Debug.Print oRange2.Address ‘Так оно и есть

Точно такие же особенности у свойств Row и Rows, Column и Columns.

  • Characters — это простое с виду свойство позволяет решить непростую задачу: как изменить (текст или формат) части текста в ячейке, не затрагивая остальные данные. Например, чтобы ввести текст в ячейку A1 и изменить цвет первой буквы, можно воспользоваться кодом

Dim oRange As Range

Set oRange = Range(«A1»)

oRange.Value = «Мой текст»

oRange.Characters(1, 1).Font.Color = vbRed

Если же вам просто нужно изменить значение, то лучше воспользоваться свойством Value — как в третьей строке примера.

  • Count — возвращает количество ячеек в диапазоне. Может использоваться для проверок.
  • CurrentRegion — очень удобное свойство, которое может пригодиться, например, при копировании/экспорте данных, полученных из внешнего источника (когда сколько будет этих данных, нам изначально неизвестно). Оно возвращает объект Range, представляющий диапазон, окруженный пустыми ячейками (то есть непустую область, в которую входит исходный диапазон/ячейка). Например, чтобы выделить всю непустую область вокруг активной ячейки, можно воспользоваться кодом
  • Dependents — позволяет получить объект Range (скорее всего, включающий несмежные области) которые зависят от ячеек исходного диапазона. Работает только для текущего листа — ссылки во внешних листах этим свойством не отслеживаются. Например, чтобы выделить все ячейки, зависимые от активной, можно использовать код
  • Worksheets(«Лист1»).Activate
  • ActiveCell.Dependents.Select

Чтобы просмотреть обратную зависимость, можно использовать свойство Precedents. Чтобы просмотреть только первый уровень зависимостей, можно использовать свойства DirectDependents и DirectPrecedents.

  • End — еще одно часто используемое свойство. Оно позволяет получить объект Range, представляющий последнюю ячейку исходного диапазона. В какой стороне будет считаться последняя ячейка, можно определить при помощи передаваемого параметра.
  • Errors — свойство, которое через коллекцию Errors позволяет получить доступ к объектам Error, представляющим обнаруженные ошибки в диапазоне.
  • Font — как и в Word, это свойство позволяет получить доступ к объекту Font, при помощи которого можно настроить особенности оформления текста в ячейке (цвет, шрифт, размер букв и т.п.)
  • FormatConditions — возможность создать собственный объект, представляющий вариант оформления ячеек, который затем можно применять к разным ячейкам и диапазонам.
  • Formula — одно из самых важных свойств объекта Range. Доступно и на чтение, и на запись. Если используется на чтение, то возвращает текст формулы, прописанной в ячейку (а не вычисленное значение), если используется на запись, то позволяет записать формулу в ячейку. Если применить это свойство для диапазона, в который входит несколько ячеек, то формула будет прописана по все ячейки диапазона. Пример применения этого свойства может выглядеть так:
  • Свойство FormulaLocal, как и AddressLocal, позволяет внести поправки на особенности нумерации ячеек в локализованной версии Excel (для русских версий Excel в нем нет необходимости).
  • FormulaHidden — возможность спрятать формулы в диапазоне от пользователя. Работает только на защищенных листах.
  • HasFormula — проверить диапазон на наличие вычисляемых значений (формул).
  • Hidden — спрятать диапазон. Будет работать только в случае, если диапазон включает в себя хотя бы одну строку или столбец целиком, в противном случае вернется ошибка.
  • Interior — еще одно свойство, связанное с форматированием. В основном позволяет покрасить ячейки диапазона.
  • Item — позволяет получить еще один объект Range, который определяется путем смещения исходного диапазона.
  • Locked — это свойство позволяет заблокировать ячейки диапазона при защите листа.
  • Name — возможность получить ссылку на специальный объект именованного диапазона Name. На графическом экране с его возможностями можно познакомиться при помощи меню Вставка ->Имя. Он позволяет обращаться к диапазонам и формулам по именам и несколько напоминает по функциональности объект закладки в Word.
  • Next — перейти на следующую ячейку. Если лист не защищен, то следующей ячейкой будет считаться ячейка справа, если защищен — то следующая незаблокированная ячейка.
  • NumberFormat — возможность установить один из предопределенных форматов для чисел. Соответствует возможностям вкладки Число в меню Формат ->Ячейки на графическом экране.
  • Offset — это свойство позволяет получить новый объект Range с определенным смещением от исходного. Например, чтобы получить ячейку со смещением на три ячейки вверх от сходной и три ячейки влево, можно использовать код
  • свойство Orientation позволяет сориентировать текст в ячейках. Указывается угол наклона в градусах. Например, чтобы расположить текст по диагонали, можно использовать код
  • PageBreak — это свойство обычно используется для программной вставки разрывов страницы. Его применение может выглядеть так:
  • все свойства, которые начинаются на Pivot…, относятся к работе с объектом PivotTable (сводная таблица). Особенности работы с ней будут рассмотрены ниже.
  • QueryTable — это очень важное свойство позволяет получить ссылку на объект QueryTable — полученные с внешнего источника данные. Это свойство для объекта Range позволяет получить ссылку на объект QueryTable, которые находится в данном диапазоне. Подробнее про объект QueryTable будет рассказано ниже.
  • Range — это свойство, как уже говорилось выше, позволяет создать новый диапазон на основе уже существующего. Необходимо помнить про особенности нумерации ячеек в этом случае.
  • Resize — возможность изменить текущий диапазон. Например, увеличение его на один столбец вниз и одну строку вправо может выглядеть так:

oRange.Resize(oRange.Rows.Count + 1, oRange.Columns.Count + 1).Select

  • ShrinkToFit — это свойство позволяет автоматически настроить размер текста в диапазоне таким образом, чтобы текст умещался в ширину столбца.
  • Style — это свойство позволяет вернуть объект Style, представляющий стиль для указанного диапазона. На графическом экране то, что позволяет сделать объект Style, можно сделать через меню Формат ->Стиль.
  • Text — возможность получить значение первой ячейки диапазона в виде значения типа String. Для объекта Range это свойство доступно только для чтения.
  • Validation — это свойство позволяет вернуть объект Validation, при помощи которого можно настроить проверку вводимых в диапазон данных.
  • Value — наиболее часто используемое свойство объекта Range. Позволяет получить или назначить значение (числовое, текстовое или какое-либо другое) ячейкам диапазона. Точно для той же цели используется свойство Value2, единственное отличие — это свойство не поддерживает типы данных Currency и Date.
  • WrapText — возможность включить/отключить перевод текста на следующую строку в ячейках диапазона.

Теперь — о методах объекта Range:

  • Activate() — выделяет текущий диапазон и устанавливает курсор ввода на его первую ячейку.
  • AddComment() — возможность добавить комментарий к ячейке. Ячейка будет помечена красным уголком, а текст комментария будет показан в виде всплывающей подсказки. Этот метод можно вызвать только для диапазона, состоящего из одной ячейки. То же самое на графическом экране можно сделать при помощи меню Вставка ->Примечание.
  • AutoFill() — возможность использовать автозаполнение для диапазона (например, если первые две ячейки будут заполнены как 1 и 2, то дальше в автоматическом режиме будет продолжено: 3, 4, 5 и т.п.)
  • AutoFit() — автоматически поменять ширину всех столбцов и высоту всех строк в диапазоне, чтобы туда уместился текст ячеек. Можно применять только к тем диапазонам, которые состоят из набора столбцов (полностью) или набора ячеек (также полностью), иначе будет ошибка.
  • AutoFormat() — возможности использовать один из стилей автоформатирования (то, что на графическом экране доступно через меню Формат ->Автоформат).
  • BorderAround() — возможность поместить диапазон в рамку с выбранными вами параметрами.
  • методы Clear… позволяют очистить содержимое диапазона — от значений, форматирования, комментарий и т.п.
  • Consolidate() — возможность слить данные нескольких диапазонов (в том числе на разных листах) в один диапазон, используя при этом выбранную вами агрегатную функцию.
  • Copy() — возможность скопировать диапазон в другое место. Если место назначения не указано, он копируется в буфер обмена. Аналогично работает метод Cut(), при котором данные исходного диапазона вырезаются.
  • CopyFromRecordset() — очень удобный метод, который позволяет вставить данные из объекта ADO Recordset на лист Excel, начиная с верхнего левого угла указанного диапазона.
  • DataSeries() — метод, который может сэкономить множество времени и избежать возни с функциями даты и времени. Этот метод позволяет увеличить вами значения даты в диапазоне на указанный вами временной интервал. Например, если у вас в диапазоне стоит первое января, то при помощи этого метода можно сгенерировать первое число любого другого месяца.
  • Delete() — удаляет данные текущего диапазона. В качестве необязательно параметра можно определить, с какой стороны будут сдвигаться ячейки на место удаленных.
  • Dirty() — пометить ячейки диапазона как «грязные». Такие ячейки будут пересчитаны при следующем же пересчете. Обычно используется, когда Word сам не может догадаться, что их нужно пересчитать. Пересчитать ячейки диапазона можно и принудительно — при помощи метода Calculate().
  • методы Fill… (FillDown(), FillUp(), FillLeft(), FillRight()) позволяют размножить одно и то же значение по ячейкам диапазона в указанном вами направлении.
  • метод Find() позволяет произвести поиск по ячейкам диапазона и вернуть новый объект Range, который представляет первую ячейку, в котором было найдено нужное значение. У этого метода есть множество необязательных параметров, которые позволяют определить направление поиска, чувствительность к регистру, искать все значение ячейки или часть и т.п. Методы FindNext() и FindPrevious() позволяют продолжить поиск, начатый методом Find(), в разных направлениях.
  • метод GoalSeek() позволяет применить автоподбор значений для функции Excel программным способом. На графическом экране то же самое можно сделать при помощи меню Сервис ->Подбор параметра.
  • метод Insert() позволяет вставить ячейки в диапазон, сдвинув остальные (вы можете выбрать — вправо или вниз).
  • метод Justify() позволяет равномерно распределить текст по диапазону. Если в данный диапазон он не помещается, он будет распространен на соседние ячейки (с перезаписью их значений).
  • метод Merge() позволяет слить все ячейки диапазона в одну. При этом останется только одно значение — верхней левой ячейки. Разбить обратно такую слитую ячейку на несколько обычных можно при помощи метода UnMerge().
  • Parse() — позволяет разбить одну ячейку на несколько по указанному вами шаблону (например, чтобы отделить код города от номера телефона).
  • PasteSpecial() — операция, дополняющая Copy() и Cut(). Она позволяет вставить то, что лежит в буфере обмена, с указанием специальных параметров вставки (вставлять с добавлением к существующим данным, с умножением, вычитанием, делением и т.п.)
  • PrintOut() и PrintPreview() — позволяют вывести диапазон на печать или открыть режим просмотра перед печатью..
  • Replace() — метод, дополняющий метод Find(). Позволяет проводить поиск и замену значений в диапазоне.
  • Select() — возможность выделить указанный диапазон. Объекта Selection в Excel нет — вместо него есть возможность получить объект Range, представляющий выделенную область.
  • Show() — экран будет проскроллирован таким образом, чтобы показать указанный диапазон.
  • ShowDependents() — показать стрелки для ячеек, которые зависят от указанного диапазона (только первый уровень зависимости) или эти стрелки убрать. Обратный метод — ShowPrecedents().
  • ShowErrors() — показать источник ошибки для указанной ячейки.
  • Sort() — возможность произвести сортировку ячеек в диапазоне. Можно использовать большое количество необязательных параметров для настройки сортировки. SortSpecial() — с учетом особенностей азиатских языков.
  • Speak() — удивительный метод, который позволяет зачитывать вслух содержимое диапазона (можно определить, в каком направлении и будут ли зачитываться формулы). К сожалению, в локализованной версии Excel не работает.
  • SpecialCells() — очень удобный метод, который позволяет вернуть объект Range, включающий в себя все ячейки определенного типа (пустые, с ошибками, с комментариями, последние, с константами, с формулами, с определенным форматированием) и с определенным значением. Например, чтобы вернуть объект Range, состоящий из всех пустых ячеек диапазона, можно использовать код

Set oRange2 = oRange.SpecialCells(xlCellTypeBlanks)

oRange 2. Select ‘проверяем, так ли это

  • метод SubTotal() позволяет посчитать итоговое значение для диапазона (можно выбрать агрегатную функцию и множество других параметров).
  • метод Table() позволяет создать таблицу на основе передаваемого столбца, строки и функции, которую нужно использовать для вычисления ячеек таблицы. Пример из документации по этому методу позволяет автоматически сгенерировать таблицу умножения.
  • TextToColumns() — сложный метод, который позволяет разбить столбцы в диапазоне на несколько столбцов в соответствии с определенным алгоритмом. Принимает множество необязательных параметров.

Источник

Adblock
detector

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


Отображение активной ячейки в верхнем левом углу с кодом VBA


Отображение активной ячейки в верхнем левом углу с кодом VBA

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

1. Щелкните ячейку, которую нужно отобразить в левом верхнем углу, и нажмите Alt + F11 ключи для включения Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, скопируйте и вставьте приведенный ниже код в пустой скрипт.

VBA: прокрутить активную ячейку в верхний левый угол

 Sub TopLeft()
Application.Goto ActiveCell, Scroll:=True
End Sub

doc active cell top left 3

3. Press F5 key to run the code, then the active cell has been gone to top left of screen.


The Best Office Productivity Tools

Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails…
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns… Prevent Duplicate Cells; Compare Ranges
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select…
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more…
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic…
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF
  • More than 300 powerful features. Supports Office / Excel 2007-2021 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.

kte tab 201905

Read More… Free Download… Purchase… 


Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!

officetab bottom

Read More… Free Download… Purchase… 

Comments (2)


No ratings yet. Be the first to rate!

 

При выделении ячейки у меня показывается Msgbox  с вопросом передавать содержимое ячейки на другой лист или нет.  
If Not Intersect(Target, Range(Cells(5, 2), Cells(Конец1, 2))) Is Nothing Then  
   a = MsgBox(«Передать данные на лист Выбор?», vbOKCancel, «Передача данных»)  
   If a = 1 Then  
   …  
Но  MsgBox появляется всегда в центре экрана, а ячейки находятся в столбце В. Значений много, теряю время на перемещение.  
Как сделать, чтобы форма появлялась рядом с активной ячейкой, но не закрывала ее?

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

Это через API надо привязывать к координатам ячейки. В свое время ZVI выкладывал подобный пример для календаря.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

слэн

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

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

если с формой(не с msgbox), то можно и без api

 

ZVI

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

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

{quote}{login=The_Prist}{date=09.09.2009 11:55}{thema=}{post}Это через API надо привязывать к координатам ячейки. В свое время ZVI выкладывал подобный пример для календаря.{/post}{/quote}  
Да, была такая тема, но летом канула в лету:

http://www.planetaexcel.ru/forum.php?thread_id=9898  

Прилагаю пример, который там приводился, с календарём по двойному клику на ячейках с датами с привязкой формы к координатам ячейки,

 

ZVI

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

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

К предыдущему сообщению — см. приложение

 

{quote}{login=слэн}{date=09.09.2009 01:00}{thema=}{post}если с формой(не с msgbox), то можно и без api{/post}{/quote}  
А есть разница между Формой и МсджиБоксом? Насколько я понимаю, при старте надо поставить вручную, а координаты поставить с полученных с помощью api (или без нее)?

 

слэн

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

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

для формы существует специальный объект, куда может вовращаться управление при наступлении определенных событий.  
форма  имеет такие изменяемые свойства, как left, top, Width, Height.  

  форму вы можете конструировать гораздо гибче..  

    единственное — ее координаты отсчитываются относительно родительского окна(т.е application), а аналогичные свойства ячеек — относительно клиентского(т.е с учетом показываемых менюшек и т.п)

 

ZVI

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

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

{quote}{login=слэн}{date=09.09.2009 03:16}{thema=}{post}для формы существует специальный объект, куда может вовращаться управление при наступлении определенных событий.  
форма  имеет такие изменяемые свойства, как left, top, Width, Height.  

  форму вы можете конструировать гораздо гибче..  

    единственное — ее координаты отсчитываются относительно родительского окна(т.е application), а аналогичные свойства ячеек — относительно клиентского(т.е с учетом показываемых менюшек и т.п){/post}{/quote}  
Размеры меню и панелей можно как-то учесть в Excel 2003 и предыдщих версиях, но в Excel 2007 вместо меню ни панелей используется лента (Ribbon), которая может быть и свернута. Поэтому для Excel 2007 такой номер, похоже, не пройдет.    

  А вот с API все сработает нормально. Кстати в приложенном примере с API также учтено, чтобы форма не убегала за края экрана.

 

Всё!!!  
Спасибо!!! Все получилось!!! Спасибо за разъяснения!  
Я убрал МэсджиБокс и поставил Форму, настроил кнопки и всё работает замечательно.  
Единственное не разобрался с ходу, как поставить, чтобы Форма была справа от ячейки, левым верхним углом совпадала с левым верхним углом соседней ячейки. Но думаю, будет время разберусь!

 

nerv

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

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

{quote}{login=ZVI}{date=09.09.2009 02:09}{thema=}{post}К предыдущему сообщению — см. приложение{/post}{/quote}К сожалению, при объединенных ячейках «халтурит», т.е. позиционирует форму там, где непосредственно происходил клик.

 

VovaK

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

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

 

nerv

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

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

Ух ты! Спасибо, Владимир, сходим : )

 

ZVI

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

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

{quote}{login=nerv}{date=30.10.2011 02:24}{thema=Re: }{post}К сожалению, при объединенных ячейках «халтурит», т.е. позиционирует форму там, где непосредственно происходил клик.{/post}{/quote}  
Александр, только не говорите, что Вам нужна дата в объединенных ячейках :-)  
Чтобы игнорировать объединенные ячейки:  
If ActiveCell.MergeArea.Cells.Count > 1 Then Exit Sub  

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

  Приложил обновленную версию с измененным алгоритмом позиционирования.  
Форма отображается возле активной ячейки и при этом не выходит за видимую часть экрана. Основная процедура работает теперь корректно и с объединенными ячейками,  
а API-код совместим с 64-битными версиями Excel и операционной системы. То есть, код работает во всех версиях Excel, начиная, по крайней мере, с Excel 2002.  

  Изменен (упрощен) код вызова формы в модуле ЭтаКнига.  

  Код и свойства формы также изменены.  
Теперь в форме после навигации с клавиатуры можно по Enter ввести дату в ячейку и закрыть форму, а по ESC — просто закрыть форму. Форма закрывается также автоматически, когда теряет фокус при активации любой ячейки, в том числе и активной.  
То есть: двойной клик на ячейке с датой или на пустой ячейке — вызов календаря.  
Клик на любой ячейке, в том числе и на активной — закрытие формы.  
При выборе даты мышкой дата записывается в активную ячейку, а форма закрывается.

 

ZVI

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

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

Чтобы полностью вывести не спозиционированое начальное положение формы за видимые пределы, для поного исключения мигания при активации, в коде формы в процедуре UserForm_Initialize лучше  
вместо: Me.Top = -100  
вот это: Me.Top = -1000  
потому что высота данной формы больше 100.

 

nerv

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

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

>Александр, только не говорите, что Вам нужна дата в объединенных ячейках :-)  
И не буду) Мне интересно само позиционирование)  

  То, чего мне «удалось» добиться без API (см. файл)  
описание здесь:

http://www.excelworld.ru/forum/3-949-1  

  Уж не знаю, на сколько это хорошо или плохо, но тем не менее)  

  p.s.: воспользовался Вашим файлом, предварительно удалив все Ваши опознавательные знаки, дабы не подумали, что это Вы так коряво состряпали : )

 

VovaK

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

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

Саша, просьба — уберите календарь с формы. Я покажу как это выглядит на 2007…

 

VovaK

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

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

Замечания по позицированию в 2007:  

  1. Не учел выключение заголовков  
2. В Win 7 нужно удалять ширину бордюров (границы формы наезжают на ячейку) — без WinAPI никак    
BoardWidth = (GetSystemMetrics(5&) + GetSystemMetrics(45&) + GetSystemMetrics(7&)) / 1.333  
3.Ленту и строку формул «видит» только при Zoom 100%, при другом Zoom сильно смещает.  
4. Не понял почему так реагирует на высоту ячеек, ширина отрабатывает — высота нет.  
5. Не учел полноэкранный режим.  
6. И последнее, при позицировании на границе экрана форма «ныряет» за границы видимого — это не есть хорошо, нужно позицировать по правой (или по верхней) границе ячейки…

 

nerv

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

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

VovaK, спасибо, что помогаете!  

  >1. Не учел выключение заголовков  
А что это такое? : )  

  >2. В Win 7 нужно удалять ширину бордюров (границы формы наезжают на ячейку) — без WinAPI никак BoardWidth = (GetSystemMetrics(5&) + GetSystemMetrics(45&) + GetSystemMetrics(7&)) / 1.333  
Да, тут без API не обойтись, но если можно, чуть позже. Сейчас хотел бы попытаться решить иные задачи. Эт пусть на сладкое остается)  

  >3.Ленту и строку формул «видит» только при Zoom 100%, при другом Zoom сильно смещает.  
Попытался реабилитироваться в файле  

  >Не учел полноэкранный режим  
Можно поподробней?  

  >6. И последнее, при позицировании на границе экрана форма «ныряет» за границы видимого — это не есть хорошо, нужно позицировать по правой (или по верхней) границе ячейки…  
Это обстоятельство, на данный момент мне кажется преодолимым. Пока даж не берусь за это. Причина — не хочу загромождать код. Тож на сладкое : )

 

VovaK

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

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

Заголовки строк и таблиц, там где наименование строк и столбцов — их можно выключить.  
Полноэкранный режим — ни меню ни ленты, только таблица. Включается через вкладку «Вид».

 

ZVI

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

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

Александр, спасибо Вам, что подняли тему 04.11.2011 09:32, обратив внимание на проблемы в моем коде при наличии объединенных ячеек.  
Проблемы устранены. Но так как продолжается обсуждение (других?) тем, то мне уже не понятно, действительно ли доработка Вам была нужна, или интерес был чисто спортивный? :-)  

  Другими словами, какие и чьи проблемы-то теперь пытаемся решить?  

  Если речь о варианте без API, то это вроде был предмет обсуждения Вами в другой теме. В ней я не участвовал по 2-м причинам:  
1. Не понятна цель и преимущество сделать именно без API — количество строк кода для меня никогда не имели значения, потому что код пишется один раз, а используется многократно – один раз можно и постараться. Трудно обсуждать без понимания цели и смысла. Для меня целью было предоставить код для позиционирование формы под/над ячейкой с точностью до одного пикселя и предотвращение выхода формы за пределы видимости.  
2. Если очевидна хоть одна техническая проблема, которая без API неустранима, то он станет вариантом с API, тогда чем не устравиет предложенный?  

  Простые решения мне нравятся, особенно если они, как Вы выразились, «не халтурят». Ваш вариант (post_274918.xls) хорош и очевидно сгодится для многих случаев, но пока сильно шалит при закреплении окна. Также  немного «гуляет» по вертикали при масштабировании или изменении высоты ячейки форма, на объединенных ячейках форма не у нижнего края, с большими номерами строк «гуляет» по горизонтали, не учитывает отключения заголовков строк и таблиц, форма может выйти и за пределы видимости.  
Большинство этих «сладеньких» недочетов несложно устранить без API, но если есть хоть один, который требует API, то решение с API как бы уже есть.  

  Впрочем, походить по хоженным чужими ногами граблям я тоже люблю — хорошо обучает и незабываемо :-)

 

nerv

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

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

VovaK, благодарю, теперь буду знать : )  

    ZVI,  
>Александр, спасибо Вам, что подняли тему 04.11.2011 09:32, обратив внимание на проблемы в моем коде при наличии объединенных ячеек.  
Да не за что)  

  >2. Если очевидна хоть одна техническая проблема, которая без API неустранима, то он станет вариантом с API, тогда чем не устраивает предложенный?  
Не то, чтобы я был противником API, но, признаться, работал с ним давно, в основном с функциями терминала и то в Ассемблере.  
Ваш вариант чудесный, не подумайте ни чего такого) Но он позиционирует форму исходя из положения курсора мыши (насколько я понял) [ (для 86x) Private Declare Function GetCursorPos Lib «user32.dll» (lpPoint As POINTAPI) As Long ], меня это не совсем устраивает по причине того, что вызов той формы, для кот. я бьюсь над позиционированием, предполагается по средствам горячих клавиш. А позиция курсора мыши и активной ячейки не всегда совпадают.

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

  >Ваш вариант (post_274918.xls) хорош и очевидно сгодится для многих случаев, но пока сильно шалит при закреплении окна.  
Нет при закреплении окна он не шалит, он не работает (на данный момент) : )

 

VovaK

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

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

Саша, кроме закрепления областей есть еще одна засада — разбиение окна (Вкладка «Вид» команда — Разделить)

 

nerv

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

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

Спасибо, Владимир, знаю) И здесь тоже отмечал, кода скрины выкладывал.

 

nerv

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

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

 

nerv

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

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

Все пытаюсь добиться позиционирования формы относительно активной ячейки, в связи с чем хотел задать ряд вопрос:  

  1. Как определить позицию курсора клавиатуры (каретки)?  
Пытаюсь использовать ф-цию  
Private Declare Function GetCaretPos Lib «user32» (ByRef lpPoint As CPos) As Boolean  
со структурой  
Private Type CPos: x As Long: y As Long: End Type  

  Написано, что «копирует позицию знака вставки в клиентских координатах. Позиция знака вставки всегда дается в клиентских координатах окна, в котором она находится». Эт, конечно, все замечательно, но куда плясать дальше?)  

  2. На клавиатуре есть чудесные клавиши: Меню/Shift+F10. Если их нажать в экселе, то всплывающее меню будет автоматически размещено по отношению к активной ячейке. Можно ли этим как-нибудь воспользоваться? Отследить, какие ф-ции API вызываются и как оно работает? : )

 

nerv

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

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

НУ НАКАНЕЦ-ТА БЛИН!)))  

  Для начала хотел бы поблагодарить Владимира (ZVI) за его замечательный пример с позиционированием, из которого я очень много подчерпнул) И уж коли я о Вас заговорил, если не ошибаюсь у Вас там в первой строке (и еще чуть ниже) опечатка: LongPtr (Win64). Хотя вряд ли, но тем не менее : )  

  Итак, позиционирование формы относительно активной ячейки. API Win32.  
Синтаксис основной процедуры таков: SetFormPosition Форма, Ячейка.  

  В данном файла форма вызывается по ср-вом горячих клавиш — Ctrl+Enter.  

  p.s.: в 2007 и выше не тестировал. В Windows Vista и Windows Seven тоже. Если кому не лень,сделайте скриншот посмотреть, как она себя ведет.  

  с уважением, nerv : )

 

ZVI

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

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

{quote}{login=nerv}{date=25.11.2011 08:08}{thema=Позиционирование формы относительно ячейки. Версия 1.0}{post}…если не ошибаюсь у Вас там в первой строке (и еще чуть ниже) опечатка: LongPtr (Win64). Хотя вряд ли, но тем не менее : ){/post}{/quote}  
Добрый вечер Александр!  
Ваше «вряд ли» легко проверить, набрав в поисковике: Declare PtrSafe Function FindWindow  
Нет там ошибки, откуда сомнения? :-)

 

sva

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

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

В Win 7 и Excel 2007 нормально позиционируется.

 

Если часть ячейки находится в видимой части экрана, а часть — нет, по Ctrl+Enter ничего не происходит. :(

 

ZVI

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

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

#30

25.11.2011 20:50:11

{quote}{login=nerv}{date=25.11.2011 08:08}{thema=Позиционирование формы относительно ячейки. Версия 1.0}{post}НУ НАКАНЕЦ-ТА БЛИН!)))В данном файла форма вызывается по ср-вом горячих клавиш — Ctrl+Enter.{/post}{/quote}  
Не смотрел код, но в excel 2003 поработал немного тестировщиком :-)  
1. У правого края форма закрывает ячейку  
2. Если мышкой (не с клавиатуры) ткнуть в самую правую видимую ячейку, которая видна не полностью (у меня это T1), то формы вообще не видно.  
3. Когда окно Excel раскрыто не на весь экран что-то уж больно долго считает.  
Полагал, что из моего кода несложно было получить желаемый результат, но сделать как-то иначе — всегда полезнее, поддерживаю.

Понравилась статья? Поделить с друзьями:
  • Vba excel функция vlookup
  • Vba excel ячейка автоподбор по высоте
  • Vba excel функция string
  • Vba excel является ли числом
  • Vba excel функция round