С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/48: Рейтинг темы: голосов - 48, средняя оценка - 4.56
114 / 4 / 0
Регистрация: 07.09.2014
Сообщений: 329

Как установить границы ячейки Excel из VBA (Access)

12.02.2015, 10:52. Показов 9258. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: задать форматирование ячеек Excel, конкретно выделить все границы ячеек внутри диапазона одинарной тонкой линией определенного цвета (кроме диагоналей).
Есть два варианта - "короткий" (make_border_1) и "длинный" (make_border_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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Public Sub make_border_1()
' задаем диапазон выбора ячеек и задаем им форматирование границ
Set rng = .Range("B" & Rowss2, "F" & Rowss2)
rng.HorizontalAlignment = xlRight 'xlCenter
rng.Borders.Color = vbRed
 
Set rng = Nothing
 
End Sub
 
Public Sub make_border_2()
'границы Макрос
 
Const xlEdgeLeft = 7, xlEdgeTop = 8, xlEdgeBottom = 9, xlEdgeRight = 10
Const xlContinuous = 1, xlThin = 2
Const xlDiagonalDown = 5, xlDiagonalUp = 6, xlInsideVertical = 11, xlInsideHorizontal = 12
Const xlAutomatic = -4105
 
' задаем диапазон выбора ячеек и задаем им форматирование границ
Set rng = .Range("B" & Rowss2, "F" & Rowss2)
 
rng.HorizontalAlignment = xlLeft
rng.Borders(xlDiagonalDown).LineStyle = xlNone
rng.Borders(xlDiagonalUp).LineStyle = xlNone
    
    With rng.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 3 'xlAutomatic
        '.TintAndShade = 0
        .Weight = xlThin
    End With
    With rng.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 3
        '.TintAndShade = 0
        .Weight = xlThin
    End With
    With rng.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 3
        '.TintAndShade = 0
        .Weight = xlThin
    End With
    With rng.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 3
        '.TintAndShade = 0
        .Weight = xlThin
    End With
 
rng.Borders(xlInsideVertical).LineStyle = xlNone
rng.Borders(xlInsideHorizontal).LineStyle = xlNone
 
Set rng = Nothing
 
End Sub
Видимо нужно идти по "длинному" варианту, но нужно указать что красить нужно не диапазон целиком , а все ячейки в диапазоне. Как сделать такое указание? где то здесь получается нужно перечислить все ячейки, а не использовать range
Visual Basic
1
Set rng = .Range("B" & Rowss2, "F" & Rowss2)
Миниатюры
Как установить границы ячейки Excel из VBA (Access)   Как установить границы ячейки Excel из VBA (Access)  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.02.2015, 10:52
Ответы с готовыми решениями:

Как установить пароль в Access через VBA Excel?
Доброго времени суток! Есть Excel'евская программы которая подключается к БД Access, все работает превосходно, но теперь необходимо...

Python, модуль openpyxl: Как при записи в Excel файл не удалить обрисованные границы объеденной ячейки?
Как в Python с использованием модуля openpyxl, при записи значения в Excel файл, не нарушить обрисованные границы объединенной ячейки? К...

Как сравнить процентные ячейки в Excel VBA
Добрый день. Нужно сравнить две ячейки, у которых формат ячеек процентный, поэтому Value не подходит. Ошибка на эту строку...

3
114 / 4 / 0
Регистрация: 07.09.2014
Сообщений: 329
12.02.2015, 11:28  [ТС]
Решение по длинному варианту: не хватало просто ещё двух линий (в первый раз при записи макроса через Excel я выделял только ячейку а не диапазон )
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
 With rng.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 3
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With rng.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 3
        .TintAndShade = 0
        .Weight = xlThin
    End With
а как насчет "короткого" варианта - что в нем не так?
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.02.2015, 13:08
Лучший ответ Сообщение было отмечено intersk как решение

Решение

В екселе пробую Ваш "короткий" вариант (чуть преобразованный, поскольку в екселе, а не из акса) и ставит все границы как требуется. В примере случайным образом выбрана строка 3
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Public Sub make_border_1()
' задаем диапазон выбора ячеек и задаем им форматирование границ
Dim Rowss2, rng As Range
Rowss2 = 3
Set rng = Range("B" & Rowss2, "F" & Rowss2)
rng.HorizontalAlignment = xlRight 'xlCenter
 
rng.Borders.Color = vbRed
 
Set rng = Nothing
 
End Sub
Миниатюры
Как установить границы ячейки Excel из VBA (Access)  
1
114 / 4 / 0
Регистрация: 07.09.2014
Сообщений: 329
12.02.2015, 14:00  [ТС]
mobile, дело в том , что у меня есть разлинованный по ячейкам шаблон файла Excel. В него вношу значения. Но при вставке значений границы у некоторых ячеек стираются.
Хотел таким кодом заново подрисовывать границы. Тестил на красном цвете - и красные границы появлялись только на месте стертых линий. То есть частично оставались черные границы, что и показано на моих скринах.
Для работы изменил цвет границ на черный и код стал рабочим - потому что где границы пропадали там они и рисовались снова.
Дело наверно в шаблоне файла... Но "длинный" вариант во всех случаях рисует границы. как бы замещает все линии, а не только те которые пропадали.
Видимо разрушение границ происходит на стадии вставки новой строки... или еще чего-то...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2015, 14:00
Помогаю со студенческими работами здесь

Изменения формата ячейки Excel средствами VBA в зависимости от значения другой ячейки
Здравствуйте. Столкнулся с проблемой. Необходимо на листе Excel Залить, предположим, ячейку "C4" Зелёным цветом, при условии,...

Delphi + Excel + ячейки(объединение,границы и пр.)
Всем привет! Подскажите плз. Вывожу таблу в Excel, кое-где надо объединить ячейки, изменить границы (т.е. формление границ), вставить...

Как в Excel, VBA указать формулу от . до последеней заполненой ячейки
Как в Excel, VBA указать формулу: Range("C1").FormulaR1C1 = "=MODE("c6:c" & "ActiveSheet.UsedRange.Rows.Count")" т.е. до последеней...

Как с помощью VBA в Excel можно получить координаты определенной ячейки?
Как с помощью VBA в екселе можно получить координаты определенной ячейки. Просто в определенную ячейку надо вставить имейдж

Как в Excel установить цвет ячейки в зависимости от её знака и значения?
Такое задание: b) Задайте формат ячейки С6 так, чтобы положительные числа отображались в ней зеленым, отрицательные - красным, нулевые –...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru