Читайте также:
|
|
Циклы в программе
Пример 1 В примере счетчик j изменяется с шагом 2 при каждом выполнении цикла. По завершении цикла total равняется сумме 2, 4, 6, 8 и 10.
Sub цикл1()
For j = 2 To 10 Step 2
total = total + j
Next j
MsgBox "Сумма равна " & total
End Sub
Пример 2
В примере счетчик myNum уменьшается на 2 при каждом выполнении цикла. По окончании цикла total равняется сумме 16, 14, 12, 10, 8, 6, 4 и 2.
Sub цикл2()
For myNum = 16 To 2 Step -2
total = total + myNum
Next myNum
MsgBox "Сумма равна " & total
End Sub
Пример 3
Программа перебирает все ячейки диапазона А1:D10 на листе «Лист1». Если какая-то ячейка содержит значение меньше чем 0,5, оно заменяется нулем.
Sub цикл3()
Dim rw, col
For rw = 1 To 10 ' Цикл по строкам выполняется 10 раз
For col = 1 To 4 ' Цикл по столбцам выполняется 4 раза.
If Worksheets("Лист1").Cells(rw, col).Value < 0.5 Then
Worksheets("Лист1").Cells(rw, col).Value = 0
End If
Next col
Next rw
End Sub
Пример 4
В примере программа определяет тип данных в каждой ячейке из диапазона А1:А10 и перечисляет эти типы в колонке, расположенной справа от исходных ячеек:
Sub цикл4()
For Each c In Worksheets("Лист1").Range("A1:A10").Cells
If Application.IsText(c.Value) Then
c.0ffset(0, 1).Formula = "Text"
Elself Application.IsNumber(c.Value) Then
c.0ffset(0, 1).Formula = "Number"
Elself Application.IsLogical(c.Value) Then
c.0ffset(0, 1).Formula = "Boolean"
Elself Application.IsError(c.Value) Then
c.0ffset(0, 1).Formula = "Error"
Elself c.Value = "" Then
c.0ffset(0, 1).Formula = "(blank cell)"
End If
Next c
End Sub
Пример 5
Допустим, лист Лист1 содержит список, для которого Вы хотите установить формат чисел. Единственное, что известно об этом списке, — он начинается с ячейки А1; число строк и колонок в нем Вы не знаете. В следующем примере показано, как отформатировать такой список через свойство CurrentRegion:
Sub цикл5()
Set myRange = Worksheets("Лист1").Range("A1").CurrentRegion
myRange.NumberFormat = "0.0"
End Sub
Пример 6
Пусть активный лист содержит результаты каких-то измерений за определенный период времени. В первой колонке использованного диапазона записаны даты, во второй — время, а в третьей и четвертой — результаты измерений. Ниже приведен текст макроса, который объединяет пары «дата-время» в одно значение, и применяет к полученному значению формат даты. В таблице могут быть пустые строки и колонки. Чтобы получить весь использованный диапазон, включая пустые строки, можно задействовать свойство UsedRange. Для проверки программы в столбец А поместите данные о днях, установив формат данных Дата -ДД.ММ.ГГ, для столбца В установить формат данных Время – тип 13:30, а затем вводить данные по указанному шаблону. Вот один из вариантов преобразования и форматирования дат и времени:
Sub цикл6()
Set myRange = ActiveSheet.UsedRange
myRange.Columns("C").Insert
Set dateCol = myRange.Columns("C")
For Each c In dateCol.Cells
If c.Offset(0, -1).Value <> "" Then
c.FormulaR1C1 = "=RC[-2]+RC[-1]"
End If
Next
dateCol.NumberFormat = " d mmm,yyyy hh:mm"
dateCol.Copy
dateCol.PasteSpecial Paste:=xlValues
myRange.Columns("A:B").Delete
dateCol.AutoFit ‘ изменяет автоширину
End Sub
Данные до выполнения | Результат после выполнения | ||||
A | B | C | A | B | |
7.01.2001 | 0:12 | 6,00 | 7 янв,2001 00:12 | 6,00 | |
8.01. 2001 | 1:00 | 12,00 | 8 янв,2001 01:00 | 12,00 | |
9.01. 2001 | 1:48 | 11,00 | 9 янв,2001 01:48 | 11,00 | |
10.01. 2001 | 2:36 | 10,00 | 10 янв,2001 02:36 | 10,00 | |
11.01. 2001 | 3:24 | 8,00 | 11 янв,2001 03:24 | 8,00 | |
12.01. 2001 | 4:12 | 7,00 | 12 янв,2001 04:12 | 7,00 | |
13.01. 2001 | 5:00 | 5,00 | 13 янв,2001 05:00 | 5,00 | |
14.01. 2001 | 5:48 | 4,00 | 14 янв,2001 05:48 | 4,00 | |
15.01. 2001 | 6:36 | 3,00 | 15 янв,2001 06:36 | 3,00 | |
16.01. 2001 | 7:24 | 2,00 | 16 янв,2001 07:24 | 2,00 | |
17.01. 2001 | 8:12 | 1,00 | 17 янв,2001 08:12 | 1,00 |
Пример 7
В примере выполняется цикл по диапазону A1:D10 на листе Лист1 и присваивается любому числу, имеющему абсолютное значение меньше 0.01, значение 0 (ноль).
Sub цикл7()
For Each r In Worksheets("Лист1").Range("A1:D10").Cells
If Abs(Cr.Value) < 0.01 Then r.Value = 0
Next r
End Sub
Дата добавления: 2015-07-08; просмотров: 74 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Функции и процедуры. | | | Пример 8 |