Формуляр |
Дата: Вторник, 15.01.2013, 21:15 |
Сообщение № 1 |
|
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация:
255
±
Замечаний:
0% ±
 Excel 2003, 2013 | |
Вам когда-нибудь приходилось заполнять / форматировать диагональ матрицы 20х20 ? А 100х100 ? Меня лично на долго не хватило... Написал вот макрос.
Public Sub DiagonalSelection()
'Выделяет ячейки по диагонали выделенного диапазона
Dim i%, j%, n%
Dim mainDgnlFlg As Boolean
Dim dgnlRng As Range
With ActiveWindow.RangeSelection
'Главная диагональ
mainDgnlFlg = Not (ActiveCell.Row = .Row Xor ActiveCell.Column = .Column)
'n = Min(.Rows.Count, .Columns.Count)
n = IIf(.Rows.Count < .Columns.Count, .Rows.Count, .Columns.Count)
Set dgnlRng = .Cells(IIf(mainDgnlFlg, 1, .Rows.Count), 1)
For j = 2 To n
i = IIf(mainDgnlFlg, j, .Rows.Count + 1 - j)
Set dgnlRng = Union(dgnlRng, .Cells(i, j))
Next j
End With 'ActiveWindow.RangeSelection
dgnlRng.Select
End Sub
Вам когда-нибудь приходилось заполнять / форматировать диагональ матрицы 20х20 ? А 100х100 ? Меня лично на долго не хватило... Написал вот макрос.
Public Sub DiagonalSelection()
'Выделяет ячейки по диагонали выделенного диапазона
Dim i%, j%, n%
Dim mainDgnlFlg As Boolean
Dim dgnlRng As Range
With ActiveWindow.RangeSelection
'Главная диагональ
mainDgnlFlg = Not (ActiveCell.Row = .Row Xor ActiveCell.Column = .Column)
'n = Min(.Rows.Count, .Columns.Count)
n = IIf(.Rows.Count < .Columns.Count, .Rows.Count, .Columns.Count)
Set dgnlRng = .Cells(IIf(mainDgnlFlg, 1, .Rows.Count), 1)
For j = 2 To n
i = IIf(mainDgnlFlg, j, .Rows.Count + 1 - j)
Set dgnlRng = Union(dgnlRng, .Cells(i, j))
Next j
End With 'ActiveWindow.RangeSelection
dgnlRng.Select
End Sub
Формуляр
Excel 2003 EN, 2013 EN
|
|
| Ответить
|
Staniiislav |
Дата: Среда, 16.01.2013, 17:24 |
Сообщение № 2 |
|
Группа: Проверенные
Ранг: Новичок
Сообщений: 28
Репутация:
3
±
Замечаний:
0% ±
 2010 | |
Добрый день А что должно произойти если запустить макрос на пустом листе?
Добрый день А что должно произойти если запустить макрос на пустом листе?Staniiislav
Единственный способ стать умнее, играть с более умным соперником
|
|
| Ответить
|
Формуляр |
Дата: Среда, 16.01.2013, 17:39 |
Сообщение № 3 |
|
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация:
255
±
Замечаний:
0% ±
 Excel 2003, 2013 | |
Смотря чего на нём выделено. Если 1 ячейку - ничего. Если диапазон ячеек - выделит диагональ.
Смотря чего на нём выделено. Если 1 ячейку - ничего. Если диапазон ячеек - выделит диагональ.Формуляр
Excel 2003 EN, 2013 EN
|
|
| Ответить
|
Staniiislav |
Дата: Четверг, 17.01.2013, 10:28 |
Сообщение № 4 |
|
Группа: Проверенные
Ранг: Новичок
Сообщений: 28
Репутация:
3
±
Замечаний:
0% ±
 2010 | |
понял, спасибо за ответ
Единственный способ стать умнее, играть с более умным соперником
|
|
| Ответить
|