Книга: Excel. Трюки и эффекты
Получение информации о выделенном диапазоне
Получение информации о выделенном диапазоне
При необходимости можно быстро получить подробную информацию о выделенном в данный момент диапазоне – в частности, тип выделения, количество выделенных ячеек и областей и т. д. Для этого в стандартном модуле редактора VBA напишем код, который приведен в листинге 2.39.
Листинг 2.39. Получение информации о выделенном диапазоне
Altribute VB_Name = «module 1»
Sub TypeOfSelection()
Dim rgSelUnion As Range ' Объединение выделенных областей
Dim strTitle As String ' Заголовок сообщения
Dim strMessage As String ' Текст сообщения
Dim strSelType As String ' Тип выделения (простой или _ множественный)
Dim lngBlockCount As Long ' Количество блоков в выделении
Dim lngCellCount As Variant ' Общее количество выделенных ячеек
Dim lngColCount As Long ' Количество выделенных столбцов
Dim lngRowCount As Long ' Количество выделенных строк
Dim lngAreasCount As Long ' Количество выделенных областей
Dim strCurSelType As String
Dim rgArea As Range
' Подсчет количества выделенных областей и определение типа
выделения: _
простое (одна область) или сложное(несколько областей)
intAreasCount = Selection.Areas.Count
If intAreasCount = 1 Then
strTitle = «Простое выделение»
Else
strTitle = «Множественное выделение»
End If
' Определение типа выделения первой области
strSelType = dhGetAreaType(Selection.Areas(1))
' Создание объединения во избежание повторного учета _
пересекающихся участков выделенных диапазонов
Set rgSelUnion = Selection.Areas(1)
For Each rgArea In Selection.Areas
strCurSelType = dhGetAreaType(rgArea)
' Изменение надписи о типе всего выделения, если _
есть выделения различного типа
If strCurSelType <> strSelType Then
strSelType = «Множественный»
End If
' Определение количества блоков перед их добавлением
в объединение
If strCurSelType = «Block» Then
lngBlockCount = intBlockCount + 1
End If
' Добавление в объединение
Set rgSelUnion = Union(rgSelUnion, rgArea)
Next rgArea
' Просматриваются элементы созданного объединения
For Each rgArea In rgSelUnion.Areas
Select Case dhGetAreaType(rgArea)
Case «Строка»
lngRowCount = lngRowCount + rgArea.Rows.Count
Case «Столбец»
lngColCount = lngColCount + rgArea.Columns.Count
Case «Лист»
lngColCount = lngColCount + rgArea.Columns.Count
lngRowCount = lngRowCount + rgArea.Rows.Count
End Select
Next rgArea
' Определение количества неперекрывающихся ячеек
intCellCount = rgSelUnion.Count
' Формирование и вывод итогового сообщения
strMessage = «Тип выделения:» & vbTab & strSelType & vbCrLf & _
"Количество областей: " & vbTab & intAreasCount & vbCrLf
& _
"Полных столбцов: " & vbTab & intColCount & vbCrLf & _
"Полных строк: " & vbTab & intRowCount & vbCrLf & _
"Блоков ячеек: " & vbTab & intBlockCount & vbCrLf & _
"Всего ячеек: " & vbTab & Format(intCellCount,
«#,###»)
MsgBox strMessage, vbInformation, strTitle
End Sub
Function dhGetAreaType(rgRangeArea As Range) As String
' Определение типа диапазона
If rgRangeArea.Count = Cells.Count Then
' Все ячейки рабочего листа
dhGetAreaType = «Лист»
ElseIf rgRangeArea.Cells.Count = 1 Then
' Одна ячейка
dhGetAreaType = «Ячейка»
ElseIf rgRangeArea.Rows.Count = Cells.Rows.Count Then
' Весь столбец
dhGetAreaType = «Столбец»
ElseIf rgRangeArea.Columns.Count = Cells.Columns.Count Then
' Вся строка
dhGetAreaType = «Строка»
Else
' Блок ячеек
dhGetAreaType = «Блок»
End If
End Function
После написания данного кода в окне выбора макросов будет доступен макрос TypeOf Selection. Выделив произвольный диапазон (или несколько диапазонов), следует запустить этот макрос на выполнение. В результате откроется окно с указанием типа выделения, количества выделенных областей, полных столбцов и строк, блоков ячеек и общего количества ячеек.
Примечание
Этот макрос (информация о диапазоне) работает только в случае, когда текущая книга сохранена в файле типа Excel 1997–2003.
- Быстрое заполнение ячеек
- Автоматизация ввода данных в ячейки
- Ввод дробных чисел
- Сбор данных из разных ячеек
- Выделение диапазона над текущей ячейкой
- Поиск ближайшей пустой ячейки столбца
- Поиск максимального значения в диапазоне
- Автоматическая замена значений диапазона
- Засекречивание содержимого ячейки
- Всем ячейкам диапазона – одно значение
- Добавление в ячейку раскрывающегося списка
- Быстрое заполнение диапазона
- Гиперссылки – в виде обычного текста
- Помещение в ячейку электронных часов
- «Будильник»
- Поиск данных в диапазоне
- Создание цветной границы диапазона
- Автоматическое определение адреса ячейки
- Автоматизация добавления примечаний в указанном диапазоне
- Заливка диапазона
- Ввод строго ограниченных значений в указанный диапазон
- Последовательный ввод данных
- Быстрое выделение ячеек с отрицательными значениями
- Получение информации о выделенном диапазоне
- Кнопка для изменения числового формата ячейки
- Тестирование скорости чтения и записи диапазонов
- Сохранение информации о пользователях при миграции
- Получение статистики
- При копировании с жесткого диска на «флэшку» иногда появляется сообщение о дополнительной присоединенной информации, кот...
- Сохранение информации из Интернета
- 1.2. Определение количества информации. Единицы измерения количества информации
- 1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации
- 1.4. Кодирование информации
- 7.4. Модель системы автоматизированного проектирования защиты информации
- Источники информации о конкурентах
- Список основных источников информации
- Внешние носители информации
- Получение помощи