Академический Документы
Профессиональный Документы
Культура Документы
Excel 2007 Ячейка и Диапазон
Excel 2007 Ячейка и Диапазон
диапазон
Автоматизация ввода данных в ячейки
Листинг 2.16. Ввод данных в ячейки
Sub SetCellData()
' Заполнение значениями ячеек А3 и В4
Range("A3") = "Данные для ячейки A3"
Range("B4") = "Данные для ячейки B4"
End Sub
1
Else
' Поиск максимального значения во всех ячейках листа
ActiveSheet.Cells.Find(Application.Max(ActiveSheet.Cells)).Select
End If
Exit Sub
NoCell:
MsgBox "Максимальное значение не найдено"
End Sub
2
End Sub
Второй способ
3
For intCol = 0 To intCols - 1
ActiveCell.Offset(lngRow, intCol).Value = lngVal
lngVal = lngVal + lngStep
Next intCol
Next lngRow
Третий способ
4
Dim varNextCall As Variant
' Записываем в ячейку текущее время
Cells(1, 1).Value = Now
' Записываем в varNextCall время, когда вызвать этот макрос _
в следующий раз (через 1 секунду)
varNextCall = TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
' Уведомляем Excel в необходимости вызова макроса
Application.OnTime varNextCall, "UpdateTime"
End Sub
«Будильник»
Листинг 2.27. «Будильник»
Sub Clock()
' Уведомляем Excel, что процедуру Alarm нужно вызвать в 20:55
Application.OnTime TimeValue("20:55:00"), "Alarm"
End Sub
Sub Alarm()
MsgBox "Пора ужинать!!!"
End Sub
5
Else
MsgBox rgResult.Address
End If
End Sub
6
.Weight = xlMedium
.LineStyle = xlDash
.Color = RGB(255, 0, 255)
End With
End Sub
Заливка диапазона
Листинг 2.34. Создание заливки диапазона
Sub FillRange()
' Заливка диапазона
With Range("B1:E10")
' Задаем узор - сетчатый
.Interior.Pattern = xlPatternChecker
' Цвет узора - синий
.Interior.PatternColor = RGB(0, 0, 255)
' Цвет ячейки - красный
.Interior.Color = RGB(255, 0, 0)
End With
End Sub
7
Ввод строго ограниченных значений в указанный диапазон
8
' Просмотр всех измененных ячеек и контроль ввода в тех, которые _
принадлежат заданному диапазону
For Each cell In Target
' Проверка принадлежности диапазону
If Union(cell, rgInputRange).Address = rgInputRange.Address Then
' Контроль правильности ввода
varResult = IsCellDataValid(cell)
If varResult = True Then
' Введено корректное значение
Exit Sub
Else
' Формирование и вывод сообщения об ошибке
strMessage = "Ячейка " & cell.Address(False, False) & ":" _
& vbCrLf & vbCrLf & varResult
MsgBox strMessage, vbCritical, "Неправильное значение"
' Очистка ввода
Application.EnableEvents = False
cell.ClearContents
cell.Activate
Application.EnableEvents = True
End If
End If
Next cell
End Sub
9
IsCellDataValid = True
End Function
10
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
11
lngRowCount = lngRowCount + rgArea.Rows.CountLarge
Case "Столбец"
lngColCount = lngColCount + rgArea.Columns.CountLarge
Case "Лист"
lngColCount = lngColCount + rgArea.Columns.CountLarge
lngRowCount = lngRowCount + rgArea.Rows.CountLarge
End Select
Next rgArea
' Определение количества неперекрывающихся ячеек
lngCellCount = rgSelUnion.CountLarge
12
Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Call UpdateToolbar
End Sub
Sub UpdateToolbar()
' Обновление панели инструментов (если она создана)
On Error Resume Next
' Изменение заголовка кнопки (на название формата выделенной ячейки)
CommandBars("Числовой формат").Controls(1).Caption = _
ActiveCell.NumberFormat
End Sub
Sub ChangeNumFormat()
' Отображение диалогового окна изменения формата ячейки
Application.Dialogs(xlDialogFormatNumber).Show
Call UpdateToolbar
End Sub
13
Тестирование скорости чтения и записи диапазонов
Листинг 2.42. Тестирование скорости чтения и записи диапазонов
Sub TableSpeedTest()
Dim alngData() As Long ' Массив с числами
Dim lngCount As Long ' Количество элементов в массиве
Dim dtStart As Date ' Хранит время (и даже дату) начала _
тестирования
Dim strArrayToTable As String ' Время записи в таблицу
Dim strTableToArray As String ' Время чтения из таблицы
Dim strMessage As String
Dim i As Long
14