Excel макросы весь столбец

 

Zavik21

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

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

Добрый день!

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

Можете подсказать как сделать? Спасибо.

Прикрепленные файлы

  • 11.xlsm (17.83 КБ)

 

kuklp

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

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

E-mail и реквизиты в профиле.

.

Изменено: kuklp15.04.2016 21:48:07

Я сам — дурнее всякого примера! …

 

Sanja

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

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

#3

15.04.2016 16:15:03

?

Код
Public iValue As Long
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns(1)) Is Nothing Then
        Application.EnableEvents = False
        Application.ScreenUpdating = 0
        tt = 0
        On Error Resume Next
        tt = CInt(Target)
        On Error GoTo 0
        n_ = MsgBox("Добавить " & tt & " к " & iValue & "?", vbYesNo) = 6
        Target = iValue - tt * n_
        Target.Select
        iValue = Target
    End If
    Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Columns(1)) Is Nothing Then
        iValue = Target
    End If
End Sub

Согласие есть продукт при полном непротивлении сторон.

 

Hugo

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

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

#4

15.04.2016 16:18:49

Вроде так (не изучал, особо ничего не менял, только Range(«A1»)>-Columns(1) и Target->Target(1)):

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target(1), Columns(1)) Is Nothing Then
        Application.EnableEvents = False
        Application.ScreenUpdating = 0
        tt = 0
        On Error Resume Next
        tt = CInt(Target(1))
        On Error GoTo 0
        n_ = MsgBox("Добавить " & tt & " к " & iValue & "?", vbYesNo) = 6
        Target(1) = iValue - tt * n_
        Target(1).Select
        iValue = Target(1)
    End If
    Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Columns(1)) Is Nothing Then
        iValue = Target
    End If
End Sub

Изменено: Hugo15.04.2016 16:20:05

 

Zavik21

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

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

Спасибо за ответы! Ребят, как я и писал выше, мне нужно чтобы макрос применился с А4 до конца столбца.

Пробую заменить текст (Target, Range(«A4»)) на  (Target, Range(«A4:A5000»), но срабатывает некорректно, не всегда определяет предыдущее значение, если вводишь первый раз в ячейку.( файл прикрепил)

Прикрепленные файлы

  • 11.xlsm (17.29 КБ)

Изменено: Zavik2115.04.2016 16:31:38

 

Фродо

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

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

#6

15.04.2016 16:46:22

Zavik21,

добавьте в самый верх модуль листа и будет вам счастье

Код
Public iValue As Long

у меня простая версия Экселя, в ней нет кнопки «Прочитать мысли и сгенерировать файл пример»

 

Zavik21

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

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

Не помогло(
Я не совсем понимаю, что надо сделать с примером?)
Добавил в начало файла по Вашей рекомендации код, не помогло. В первой ячейке (а4) работает, а в остальных не пойму по какому принципу иногда срабатывает суммирование а в большинстве случаев не работает, и суммирует не так как должно ( если в ячейка цифра 4, вводишь еще 2, должно быть 6, а он суммирует к 1 всегда, ну или к первому введеному значению.

Прикрепленные файлы

  • 11.xlsm (16.02 КБ)

 

kuklp

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

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

E-mail и реквизиты в профиле.

#8

15.04.2016 20:39:12

Кросс:

http://www.excel-vba.ru/forum/index.php?topic=4472.msg24241#new

Изменено: kuklp15.04.2016 21:47:42

Я сам — дурнее всякого примера! …

Содержание

  1. Выбор ячеек и диапазонов с помощью процедур Visual Basic в Excel
  2. Выбор ячейки на активном листе
  3. Выбор ячейки на другом листе в той же книге
  4. Выбор ячейки на листе в другой книге
  5. Выбор диапазона ячеек на активном листе
  6. Выбор диапазона ячеек на другом листе в той же книге
  7. Выбор диапазона ячеек на листе в другой книге
  8. Выбор именованного диапазона на активном листе
  9. Выбор именованного диапазона на другом листе в той же книге
  10. Выбор именованного диапазона на листе в другой книге
  11. Выбор ячейки относительно активной ячейки
  12. Выбор ячейки относительно другой (не активной) ячейки
  13. Выбор смещения диапазона ячеек из указанного диапазона
  14. Выбор указанного диапазона и изменение его размера
  15. Выбор указанного диапазона, его смещение и изменение размера
  16. Выбор объединения двух или более указанных диапазонов
  17. Выбор пересечения двух или более указанных диапазонов
  18. Выбор последней ячейки столбца непрерывных данных
  19. Выбор пустой ячейки в нижней части столбца непрерывных данных
  20. Выбор целого диапазона смежных ячеек в столбце
  21. Как выбрать весь диапазон несмежных ячеек в столбце
  22. Выбор прямоугольного диапазона ячеек
  23. Выбор нескольких несмежных столбцов разной длины
  24. Примечания к примерам
  25. Скрытие/отображение ненужных строк и столбцов
  26. Постановка задачи
  27. Способ 1. Скрытие строк и столбцов
  28. Способ 2. Группировка
  29. Способ 3. Скрытие помеченных строк/столбцов макросом
  30. Способ 4. Скрытие строк/столбцов с заданным цветом

Выбор ячеек и диапазонов с помощью процедур Visual Basic в Excel

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена. В примерах в этой статье используются методы Visual Basic, перечисленные в следующей таблице.

В примерах в этой статье используются свойства, приведенные в следующей таблице.

Выбор ячейки на активном листе

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

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

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

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

Выбор ячейки на листе в другой книге

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

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

Выбор диапазона ячеек на активном листе

Чтобы выбрать диапазон C2:D10 на активном листе, можно использовать любой из следующих примеров:

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

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

Кроме того, можно активировать лист, а затем выбрать диапазон с помощью метода 4, приведенного выше:

Выбор диапазона ячеек на листе в другой книге

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

Кроме того, можно активировать лист, а затем выбрать диапазон с помощью метода 4, приведенного выше:

Выбор именованного диапазона на активном листе

Чтобы выбрать именованный диапазон «Тест» на активном листе, можно использовать один из следующих примеров:

Выбор именованного диапазона на другом листе в той же книге

Чтобы выбрать именованный диапазон «Тест» на другом листе в той же книге, можно использовать следующий пример:

Или можно активировать лист, а затем использовать метод 7 выше, чтобы выбрать именованный диапазон:

Выбор именованного диапазона на листе в другой книге

Чтобы выбрать именованный диапазон «Тест» на листе в другой книге, можно использовать следующий пример:

Или можно активировать лист, а затем использовать метод 7 выше, чтобы выбрать именованный диапазон:

Выбор ячейки относительно активной ячейки

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

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

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

Выбор ячейки относительно другой (не активной) ячейки

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

Выбор смещения диапазона ячеек из указанного диапазона

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

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

Выбор указанного диапазона и изменение его размера

Чтобы выбрать именованный диапазон «База данных», а затем расширить выделение на пять строк, можно использовать следующий пример:

Выбор указанного диапазона, его смещение и изменение размера

Чтобы выбрать диапазон из четырех строк ниже и трех столбцов справа от именованного диапазона «База данных» и включить две строки и один столбец больше именованного диапазона, можно использовать следующий пример:

Выбор объединения двух или более указанных диапазонов

Чтобы выбрать объединение (то есть объединенную область) двух именованных диапазонов «Тест» и «Образец», можно использовать следующий пример:

Значение , чтобы оба диапазона были на одном листе для работы в этом примере. Обратите внимание, что метод Union не работает на разных листах. Например, эта строка работает нормально.

возвращает сообщение об ошибке:

Сбой метода Union класса приложения

Выбор пересечения двух или более указанных диапазонов

Чтобы выбрать пересечение двух именованных диапазонов «Тест» и «Образец», можно использовать следующий пример:

Обратите внимание, что для работы в этом примере оба диапазона должны находиться на одном листе.

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

Выбор последней ячейки столбца непрерывных данных

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

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

Выбор пустой ячейки в нижней части столбца непрерывных данных

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

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

Выбор целого диапазона смежных ячеек в столбце

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

При использовании этого кода с образцом таблицы будут выделены ячейки A1–A4.

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

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

При использовании этого кода с образцом таблицы будут выделены ячейки A1–A6.

Выбор прямоугольного диапазона ячеек

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

Этот код будет выбирать ячейки A1–C4. Ниже перечислены другие примеры выбора того же диапазона ячеек.

В некоторых случаях может потребоваться выбрать ячейки A1–C6. В этом примере метод CurrentRegion не будет работать из-за пустой строки в строке 5. В следующих примерах будут выделены все ячейки:

Выбор нескольких несмежных столбцов разной длины

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

При использовании этого кода с образцом таблицы будут выбраны ячейки A1:A3 и C1:C6.

Примечания к примерам

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

вы можете использовать:

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

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

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

Источник

Скрытие/отображение ненужных строк и столбцов

Постановка задачи

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

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

Задача — временно убирать с экрана ненужные в данный момент для работы строки и столбцы, т.е.,

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

В реальной жизни примеров таких таблиц — море.

Способ 1. Скрытие строк и столбцов

Способ, прямо скажем, примитивный и не очень удобный, но два слова про него сказать можно. Любые выделенные предварительно строки или столбцы на листе можно скрыть, щелкнув по заголовку столбца или строки правой кнопкой мыши и выбрав в контекстном меню команду Скрыть (Hide) :

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

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

Способ 2. Группировка

Если выделить несколько строк или столбцов, а затем выбрать в меню Данные — Группа и структура — Группировать (Data — Group and Outline — Group) , то они будут охвачены прямоугольной скобкой (сгруппированы). Причем группы можно делать вложенными одна в другую (разрешается до 8 уровней вложенности):

Более удобный и быстрый способ — использовать для группировки выделенных предварительно строк или столбцов сочетание клавиш Alt+Shift+стрелка вправо, а для разгруппировки Alt+Shift+стрелка влево, соответственно.

Такой способ скрытия ненужных данных гораздо удобнее — можно нажимать либо на кнопку со знаком «+» или ««, либо на кнопки с цифровым обозначением уровня группировки в левом верхнем углу листа — тогда все группы нужного уровня будут сворачиваться или разворачиваться сразу.

Кроме того, если в вашей таблице присутствуют итоговые строки или столбцы с функцией суммирования соседних ячеек, то есть шанс (не 100%-ый правда), что Excel сам создаст все нужные группировки в таблице одним движением — через меню Данные — Группа и структура — Создать структуру (Data — Group and Outline — Create Outline) . К сожалению, подобная функция работает весьма непредсказуемо и на сложных таблицах порой делает совершенную ерунду. Но попробовать можно.

В Excel 2007 и новее все эти радости находятся на вкладке Данные (Data) в группе Структура (Outline) :

Способ 3. Скрытие помеченных строк/столбцов макросом

Этот способ, пожалуй, можно назвать самым универсальным. Добавим пустую строку и пустой столбец в начало нашего листа и отметим любым значком те строки и столбцы, которые мы хотим скрывать:

Теперь откроем редактор Visual Basic (ALT+F11), вставим в нашу книгу новый пустой модуль (меню Insert — Module) и скопируем туда текст двух простых макросов:

Как легко догадаться, макрос Hide скрывает, а макрос Show — отображает обратно помеченные строки и столбцы. При желании, макросам можно назначить горячие клавиши (Alt+F8 и кнопка Параметры), либо создать прямо на листе кнопки для их запуска с вкладки Разработчик — Вставить — Кнопка (Developer — Insert — Button) .

Способ 4. Скрытие строк/столбцов с заданным цветом

Допустим, что в приведенном выше примере мы, наоборот, хотим скрыть итоги, т.е. фиолетовые и черные строки и желтые и зеленые столбцы. Тогда наш предыдущий макрос придется немного видоизменить, добавив вместо проверки на наличие «х» проверку на совпадение цвета заливки с произвольно выбранными ячейками-образцами:

Однако надо не забывать про один нюанс: этот макрос работает только в том случае, если ячейки исходной таблицы заливались цветом вручную, а не с помощью условного форматирования (это ограничение свойства Interior.Color). Так, например, если вы с помощью условного форматирования автоматически подсветили в своей таблице все сделки, где количество меньше 10:

. и хотите их скрывать одним движением, то предыдущий макрос придется «допилить». Если у вас Excel 2010-2013, то можно выкрутиться, используя вместо свойства Interior свойство DisplayFormat.Interior, которое выдает цвет ячейки вне зависимости от способа, которым он был задан. Макрос для скрытия синих строк тогда может выглядеть так:

Ячейка G2 берется в качестве образца для сравнения цвета. К сожалению, свойство DisplayFormat появилось в Excel только начиная с 2010 версии, поэтому если у вас Excel 2007 или старше, то придется придумывать другие способы.

Источник

Радиомилит

1 / 1 / 1

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

Сообщений: 8

1

18.12.2016, 22:39. Показов 2106. Ответов 4

Метки нет (Все метки)


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

Здравствуйте! Мне нужно сделать так что бы макрос выполнялся для всех ячеек столбца.

Этот пример разработан для одной строки, буквено-цифровые обозначения в правом столбце макрос расшифровывает в левыом

Visual Basic
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
26
27
28
Sub gfg()
    Dim MyString As String
    Dim Temp As Integer
    MyString = Range("B1").Value
    
    
    Select Case Mid(MyString, 1, 1)
        Case "В", "в"
            Range("A1").Value = "Выпуск "
        Case "О", "о"
            Range("A1").Value = "Отчисление "
    End Select
    
    Temp = CInt(Mid(MyString, 2, 2))
    Select Case Mid(MyString, 2, 2)
    Case "50" To "99"
        Range("A1").Value = Range("A1").Value + "19" + Temp
    Case "00" To "50"
        Range("A1").Value = Range("A1").Value + "20" + Temp
    End Select
    
    Select Case Mid(MyString, 4, 1)
    Case "Д", "д"
        Range("A1").Value = Range("A1").Value + " д/о "
    Case "З", "з"
        Range("A1").Value = Range("A1").Value + " з/о "
    End Select
End Sub



0



Казанский

15136 / 6410 / 1730

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

Сообщений: 9,999

18.12.2016, 23:37

2

Радиомилит, пробуйте

Visual Basic
1
2
3
4
5
6
7
Sub Rad()
With Range("B1", Cells(Rows.Count, "B").End(xlUp))
  .Offset(, -1).Value = Evaluate(Replace( _
    "INDEX(IF(LEFT(~)=""в"",""Выпуск "",""Отчисление "")&IF(--MID(~,2,1)<5,20,19)&MID(~,2,2)&"" ""&LOWER(MID(~,4,1))&""/о"",)", _
    "~", .Address(, , Application.ReferenceStyle)))
End With
End Sub



0



1 / 1 / 1

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

Сообщений: 8

20.12.2016, 00:25

 [ТС]

3

Спасибо за ответ, но не правильно срабатывает, в столбце А пишет #ЗНАЧ!



0



15136 / 6410 / 1730

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

Сообщений: 9,999

20.12.2016, 10:03

4

Радиомилит, какая досада! Мой хрустальный шар в ремонте, а без него не вижу, какие у вас данные в ст. В.
Могу только утверждать, что второй символ — не цифра. Но как тогда в вашем коде работают строки 14-20 — непонятно.



0



GyJIeBeP

1 / 1 / 0

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

Сообщений: 31

03.12.2022, 23:58

5

Привет, может кто нибудь объяснить, как сделать макрос в экселе.

записывал макрос

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub 
 
 
    Range("F534").Select
    Selection.Copy
    Application.CutCopyMode = False
    With Selection.Interior
        .PatternColorIndex = xlAutomatic
        .Color = 49407
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

у меня 3 столбца, в каждом по 100 строк. Я через поиск ввожу значение, которое есть во всех 3-х столбцах и выделяю его.
Как сделать, чтобы макрос прошелся по всему столбцу. сверху-вниз:?



0



Выделить столбец с выделенной ячейкой

drugojandrew

Дата: Воскресенье, 06.09.2015, 13:03 |
Сообщение № 1

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 141


Репутация:

0

±

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


Excel 2013

Добрый день.
Как макросом можно выделить весь столбец с выделенной ячейкой?

 

Ответить

_Boroda_

Дата: Воскресенье, 06.09.2015, 13:15 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Так хотите?
[vba]

Код

Columns(Selection(1).Column).Select

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

RAN

Дата: Воскресенье, 06.09.2015, 13:19 |
Сообщение № 3

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Или
[vba]

Код

Selection(1).EntireColumn.Select

[/vba]
или
[vba]

Код

Columns(ActiveCell.Column).Select

[/vba]
или
[vba]

Код

ActiveCell.EntireColumn.Select

[/vba]
:D


Быть или не быть, вот в чем загвоздка!

 

Ответить

drugojandrew

Дата: Воскресенье, 06.09.2015, 14:22 |
Сообщение № 4

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 141


Репутация:

0

±

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


Excel 2013

Спасибо всем, помогли.

 

Ответить

Изменение размера ячейки в VBA Excel. Высота строки, ширина столбца, автоподбор ширины ячейки. Свойства RowHeight и ColumnWidth объекта Range.

Размер ячейки

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

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

Информационные окна с высотой строки и шириной столбца в Excel

Высота строки и ширина столбца в Excel

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

На сайте поддержки офисных приложений Microsoft так написано об этих величинах:

  • высота строки может принимать значение от 0 до 409 пунктов, причем 1 пункт приблизительно равен 1/72 дюйма или 0,035 см;
  • ширина столбца может принимать значение от 0 до 255, причем это значение соответствует количеству символов, которые могут быть отображены в ячейке.

Смотрите, как сделать все ячейки рабочего листа квадратными.

Высота строки

Для изменения высоты строки используйте свойство RowHeight объекта Range. И не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец — высота всех строк, пересекающихся с объектом Range будет изменена после присвоения свойству RowHeight этого объекта нового значения.

Примеры изменения высоты строк:

Пример 1
Изменение высоты отдельной ячейки:

ActiveCell.RowHeight = 10

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

Пример 2
Изменение высоты строки:

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

Пример 3
Изменение высоты ячеек заданного диапазона:

Range(«A1:D6»).RowHeight = 20

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

Пример 4
Изменение высоты ячеек целого столбца:

Columns(5).RowHeight = 15

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

Ширина столбца

Для изменения ширины столбца используйте свойство ColumnWidth объекта Range. Как и в случае с высотой строки, не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец — ширина всех столбцов, пересекающихся с объектом Range будет изменена после присвоения свойству ColumnWidth этого объекта нового значения.

Примеры изменения ширины столбцов:

Пример 1
Изменение ширины отдельной ячейки:

ActiveCell.ColumnWidth = 15

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

Пример 2
Изменение ширины столбца:

Columns(3).ColumnWidth = 50

в результате, третий столбец рабочего листа (столбец «C») приобретает ширину, равную 50 символам.

Пример 3
Изменение ширины ячеек заданного диапазона:

Range(«A1:D6»).ColumnWidth = 25

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

Пример 4
Изменение ширины ячеек целой строки:

в результате, всем столбцам рабочего листа будет назначена ширина, равная 35 символам.

Автоподбор ширины

Для автоподбора ширины ячейки в соответствие с размером ее содержимого используйте следующий код:

‘запишем для примера в любую ячейку рабочего

‘листа какой-нибудь текст, например, такой:

Cells(5, 5) = «Автоподбор ширины ячейки»

‘теперь подгоним ширину ячейки, а точнее

‘столбца, в котором эта ячейка находится:

Cells(5, 5).EntireColumn.AutoFit

Имейте в виду, что ширина столбца будет подогнана по расположенной в этом столбце ячейке с самым длинным содержимым. Например, если длина содержимого ячейки Cells(7, 5) будет превышать длину содержимого ячейки Cells(5, 5), то автоподбор ширины пятого столбца произойдет по содержимому ячейки Cells(7, 5), несмотря на то, что в строке кода указана другая ячейка.

Как осуществить автоподбор ширины объединенной ячейки, в которой метод AutoFit не работает, смотрите в следующей статье.

Skip to content

Как сделать перебор диапазона ячеек

На чтение 2 мин. Просмотров 14k.

Что делает макрос: Этот базовый макрос показывает вам простой способ сделать перебор диапазона ячеек по одной и выполнить какое-либо действие.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

В этом макросе используются две переменные объекта Range. Одна из переменных отражает объем данных, с которым мы работаем, в то время как другая используется для хранения каждой отдельной клетки в диапазоне. Потом мы используем оператор For Each, чтобы активировать или принести каждую ячейку в фокусе целевого диапазона.

Код макроса

Sub PereborDiapazonaYacheek()
'Шаг 1: Объявить переменные
Dim MyRange As Range
Dim MyCell As Range
'Шаг 2: Определение целевого диапазона.
Set MyRange = Range("D6:D17")
'Шаг 3: Запуск цикла через диапазон.
For Each MyCell In MyRange
'Шаг 4: Какое-либо действие с каждой ячейкой.
If MyCell.Value > 3000 Then
MyCell.Font.Bold = True
End If
'Шаг 5: Перейти к следующей ячейке в диапазоне
Next MyCell
End Sub

Как этот код работает

  1. Макрос объявляет две переменные объекта Range. Одна из них, называется MyRange, держит весь целевой диапазон. Другая, называемый MyCell, держит каждую ячейку в диапазоне, так как макрос проводит цикл через них один за другим.
  2. На шаге 2 мы заполняем переменную MyRange с целевым диапазоном. В этом примере мы используем Range («D6:D17»). Если ваш целевой диапазон является именованным, можно просто ввести его название — Range («MyNamedRange»).
  3. На этом этапе макрос начинает цикл через каждую ячейку в целевом диапазоне, активизируя ее.
  4. После того, как ячейка активируется, можно с ней что-то сделать. Это «что-то» на самом деле зависит от поставленной задачи. Вы можете удалять строки, когда активная ячейка имеет определенное значение, или вы можете вставить строку между каждой активной ячейки. В этом примере макрос меняется шрифт полужирный для любого элемента, который имеет значение больше, чем 3000.
  5. На шаге 5, макрос возвращается назад, чтобы получить следующую ячейку. После активации всех ячеек в целевом диапазоне, макрос заканчивает работу.

Как использовать

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

  1. Активируйте редактор Visual Basic, нажав ALT + F11 на клавиатуре.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

Понравилась статья? Поделить с друзьями:
  • Excel макросы работа с листами
  • Excel макросы активный лист
  • Excel макросы активная ячейка
  • Excel макросы при защите листа
  • Excel макросы последняя строка