Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
2 / 2 / 0
Регистрация: 17.11.2010
Сообщений: 15

Выделить цветом пустой столбец

24.03.2011, 10:35. Показов 3118. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравсвуйте. Не нашла такой темы, мб просто плохо искала)
В общем проблема такова: Есть 2 таблицы.
Необходимо сделать так, чтобы во второй таблице, которая пустая, были выделены цветом столбцы те же, что и в первой, которая заполнена. Число строк в столбце может меняться.
В другом случае я делала
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
29
30
For j = 6 To 36
        
            If Sheets("Табель1").Cells(2, j).Value = "В" Then
                Sheets("Табель1").Select
                Sheets("Табель1").Cells(1, j).Select
                Sheets("Табель1").Range(ActiveCell, ActiveCell.End(xlDown)).Select
                With Selection.Interior
                .ColorIndex = 40
                .Pattern = xlSolid
                End With
                
                Sheets("Табель_А").Select
                Sheets("Табель_А").Cells(1, j).Select
                Sheets("Табель_А").Range(ActiveCell, ActiveCell.End(xlDown)).Select
                With Selection.Interior
                .ColorIndex = 40
                .Pattern = xlSolid
                End With
                
            Else
                Sheets("Табель1").Select
                Sheets("Табель1").Cells(1, j).Select
                Sheets("Табель1").Range(ActiveCell, ActiveCell.End(xlDown)).Select
                Selection.Interior.ColorIndex = xlNone
                
                Sheets("Табель_А").Select
                Sheets("Табель_А").Cells(1, j).Select
                Sheets("Табель_А").Range(ActiveCell, ActiveCell.End(xlDown)).Select
                Selection.Interior.ColorIndex = xlNone
            End If
Но это прокатывает, только когда таблица заполнена, и выделается цветом столбец до последней строки, в которой записаны данные.
В случае с пустой таблицей выделяется весь столбец.

Думаю, что проблема в обозначении диапазона вот здесь Sheets("Табель_А").Range(ActiveCell, ActiveCell.End(xlDown)).Select
Но моих знаний не хватает, чтобы её решить)

Заранее спасибо)
Миниатюры
Выделить цветом пустой столбец   Выделить цветом пустой столбец  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.03.2011, 10:35
Ответы с готовыми решениями:

В Excel дан столбец чисел, найти среднее этих чисел и выделить красным цветом те числа, которые больше среднего
Дан столбец чисел. Найти среднее этих чисел и выделить красным цветов те числа, которые больше среднего. Вот код, который написал я. Всё...

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

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

4
1 / 1 / 0
Регистрация: 17.11.2010
Сообщений: 40
24.03.2011, 11:00
Я так понимаю, что первые столбцы являются обязательными, а значит не содержат пустых строк. Это позволит корректно диапазон выбрать (на пустом столбце будет выделен весь столбец, в случае если столбец заполнен частично, то xlDown отметит до первой пустой ячейки)

Т.е.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub TEST1()
 
    Dim LastRow As Integer
    Dim X As Integer
    
    X = 5 ' для примера выделяться будет с 5-й строки
    
    Cells(X, 1).Select 'выделяем начало необходимого диапазона
    Range(ActiveCell, ActiveCell.End(xlDown)).Select ' выделяется диапазон
 
    LastRow = Selection.Rows.Count - 1 + X ' получили № последней строки
    
    MsgBox LastRow
End Sub
после этого вы можете любой другой столбец (например 10-й) выделять в виде

Visual Basic
1
Range(Cells(1,10),Cells(LastRow,10)).Select
1
2 / 2 / 0
Регистрация: 17.11.2010
Сообщений: 15
24.03.2011, 11:36  [ТС]
Спасибо, leech.
Смысл вашего кода мне понятен. Правда теперь возникает ошибка Application-defined or object-defined error

В коде
Visual Basic
1
2
3
Sheets("Табель1_Суб").Select
                Sheets("Табель1_Суб").Range(Cells(1, j), Cells(LastRow, j)).Select
                Selection.Interior.ColorIndex = xlNone
На второй строке. Как её решить?
0
1 / 1 / 0
Регистрация: 17.11.2010
Сообщений: 40
24.03.2011, 11:51
Весь код Ваш я не знаю, но предположу, что незадано значение переменной j
0
2 / 2 / 0
Регистрация: 17.11.2010
Сообщений: 15
24.03.2011, 12:40  [ТС]
Я почему-то так и думала, что вы это предположите
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Dim LastRow, LastRowA As Integer
    Dim X As Integer
    
    X = 1
    Sheets("Табель1_Суб").Select
    Sheets("Табель1_Суб").Cells(X, 1).Select
    Sheets("Табель1_Суб").Range(ActiveCell, ActiveCell.End(xlDown)).Select
    LastRow = Selection.Rows.Count - 1 + X
 
    Sheets("Табель_А_Суб").Select
    Sheets("Табель_А_Суб").Cells(X, 1).Select
    Sheets("Табель_А_Суб").Range(ActiveCell, ActiveCell.End(xlDown)).Select
    LastRowA = Selection.Rows.Count - 1 + X
    
For j = 6 To 36
 
    If Sheets("Табель1").Cells(2, j).Value = "В" Then
            Sheets("Табель1_Суб").Select
                Sheets("Табель1_Суб").Range(Cells(1, j), Cells(LastRow, j)).Select
                With Selection.Interior
                .ColorIndex = 40
                .Pattern = xlSolid
                End With
 
                Sheets("Табель_А_Суб").Select
                Sheets("Табель_А_Суб").Range(Cells(1, j), Cells(LastRowA, j)).Select
                With Selection.Interior
                .ColorIndex = 40
                .Pattern = xlSolid
                End With
        Else
                Sheets("Табель1_Суб").Select
                Sheets("Табель1_Суб").Range(Cells(1, j), Cells(LastRow, j)).Select
                Selection.Interior.ColorIndex = xlNone
 
                Sheets("Табель_А_Суб").Select
                Sheets("Табель_А_Суб").Range(Cells(1, j), Cells(LastRowA, j)).Select
                Selection.Interior.ColorIndex = xlNone
        End If
Next j
Sheets("Табель1_Суб").Select
    Sheets("Табель1_Суб").Range("A1").Select
    
    Sheets("Табель_А_Суб").Select
    Sheets("Табель_А_Суб").Range("A1").Select
Весь код. Как видно переменная j - параметр цикла. Так что она задана.

Добавлено через 45 минут
Решение найдено. Везде к Cells(1, j) и Cells(LastRow/lastRowA, j) приписала Sheets("название соответствующей страницы")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2011, 12:40
Помогаю со студенческими работами здесь

Выделить цветом повторяющие ячейки
Здравствуйте уважаемые форумчане, VBA знаю как "бывалый", появилась по одной рабочей таблице выделить все дубликаты одним цветом, важно...

Выделить 2 первых предложения зеленым цветом
VBA WORD выделить 2 первых предложения зеленым цветом

Как выделить в матрице цветом элемент
Как выделить в матрице цветом элемент не зная его координат(i,j)? Sub tim() Dim a(1 To 4, 1 To 4) With Worksheets("Лист1") ...

Запись данных в пустой столбец строки
Здравствуйте Нужно помочь с идеей в реализации небольшого проекта: есть строка столбцов А1:...X1 и так далее Допустим, у нас в...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru