Другие языки программирования и технологии
Вопрос по vba макросам в excel(внутри).
Не когда не пользовался этой средой, появилась необходимость, но нет времени вникать во все тонкости программирования на vba. Как посчитать сумму ячеек? вообще как обращаться к ячейкам, для того чтобы например посмотреть их содержимое или рендомно заполнить.
к ячейкам обращаются с помощью объекта cells, например cells(y,x)="привет"
но это на активном листе, если надо на другой лист ссылку, то вот так Worksheets("Лист1").Cells(1, 1) = 5
если надо в другой книге, то Workbooks("1.xls").Worksheets("Лист1").Cells(1, 1) = 5
пример подсчета суммы:
sum=0
for a=1 to 10
sum=sum+cells(a,1)
next a
но это на активном листе, если надо на другой лист ссылку, то вот так Worksheets("Лист1").Cells(1, 1) = 5
если надо в другой книге, то Workbooks("1.xls").Worksheets("Лист1").Cells(1, 1) = 5
пример подсчета суммы:
sum=0
for a=1 to 10
sum=sum+cells(a,1)
next a
Во, наваял.
Dim upperbound As Integer, lowerbound As Integer ' Диапазон выводимых чисел
Dim startAreaX As Integer, endAreaX As Integer ' Диапазон области
Dim startAreaY As Integer, endAreaY As Integer ' заполняемых ячеек
Dim density As Integer
Sub MyMacro()
Dim rndX As Integer, rndY As Integer ' Текущие значения координат
Dim counter As Integer ' Счетчик заполненных ячеек
upperbound = 100 ' Стартовые значения
lowerbound = 1
startAreaX = 5
endAreaX = 10
startAreaY = 5
endAreaY = 10
density = 100
Randomize ' Инициализация генератора случайных чисел
For counter = 1 To density
' Выберем какую-нибудь ячейку
rndX = intRndValue(startAreaX, endAreaX)
rndY = intRndValue(startAreaY, endAreaY)
' Если она уже заполнена будем искать другую
While Not (Worksheets("Лист1").Cells(rndY, rndX).Value = Empty)
rndX = intRndValue(startAreaX, endAreaX)
rndY = intRndValue(startAreaY, endAreaY)
Wend
' Заполним ячейку случайным числом
Worksheets("Лист1").Cells(rndY, rndX).Value = intRndValue(lowerbound, upperbound)
' Если все ячейки заполнены заканчиваем работу
If counter = ((endAreaX - startAreaX) + 1) * ((endAreaY - startAreaY) + 1) Then
Exit For
End If
Next counter
End Sub
' Генерирует случайное целое число в заданном диапазоне
Function intRndValue(lowerbound, upperbound)
intRndValue = Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
End Function
Dim upperbound As Integer, lowerbound As Integer ' Диапазон выводимых чисел
Dim startAreaX As Integer, endAreaX As Integer ' Диапазон области
Dim startAreaY As Integer, endAreaY As Integer ' заполняемых ячеек
Dim density As Integer
Sub MyMacro()
Dim rndX As Integer, rndY As Integer ' Текущие значения координат
Dim counter As Integer ' Счетчик заполненных ячеек
upperbound = 100 ' Стартовые значения
lowerbound = 1
startAreaX = 5
endAreaX = 10
startAreaY = 5
endAreaY = 10
density = 100
Randomize ' Инициализация генератора случайных чисел
For counter = 1 To density
' Выберем какую-нибудь ячейку
rndX = intRndValue(startAreaX, endAreaX)
rndY = intRndValue(startAreaY, endAreaY)
' Если она уже заполнена будем искать другую
While Not (Worksheets("Лист1").Cells(rndY, rndX).Value = Empty)
rndX = intRndValue(startAreaX, endAreaX)
rndY = intRndValue(startAreaY, endAreaY)
Wend
' Заполним ячейку случайным числом
Worksheets("Лист1").Cells(rndY, rndX).Value = intRndValue(lowerbound, upperbound)
' Если все ячейки заполнены заканчиваем работу
If counter = ((endAreaX - startAreaX) + 1) * ((endAreaY - startAreaY) + 1) Then
Exit For
End If
Next counter
End Sub
' Генерирует случайное целое число в заданном диапазоне
Function intRndValue(lowerbound, upperbound)
intRndValue = Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
End Function
Сергей Аксенов
отлично, спасибо;)
Похожие вопросы
- Макрос для excel - VBA (гиперссылка)
- Excel vba макросы
- Необходимо создать макрос для excel
- VBA - Парсинг в Excel-VBA курса ЦБ
- Вопрос по макросам MS Excel
- Excel сошёл с ума (вопрос по VBA)
- пишу макрос в Excel, есть вопрос, помогите(2)
- Нужна помощь с написанием макроса в Excel.
- Вопрос по VBA(В Excel) Нужно решить y=x^2*cos(2x)+1 в 0->50 промежутке Дайте польный ответ или подзказки
- Вопрос о безопасности ОС Linux (см. внутри) ?