Как переделать код VB6 под VBA?
Формулировка задачи:
Здравствуйте!
Прошу помощи. Если есть типовой короткий рабочий код для Visual Basic 6.0, то как его переделать под VBA (Excel).
Условия. Заполнить блок ячеек (7*8) случайными числами из диапазона [-5.5;5.5]. Для каждого столбца матрицы определить сумму и число положительных элементов. Ячейки, содержащие сумму - вывести полужирным курсивом, количество - красным цветом шрифта.
Пробовал самостоятельно, но Эксель замучил меня предупреждениями: "Run-time error ‘9’. Subscript out of range" (Ошибка выполнения '9'. Индекс вне диапазона). Привожу начало кода для VBA, где проходит гладко.Решение задачи: «Как переделать код VB6 под VBA?»
textual
Листинг программы
Sub Pudge1488() Dim a(), b() Dim i&, j&, n& Dim m1#, m2#, m3#, m4#, m5#, m6#, m7#, m8#, m9#, m10# '-------------------- ActiveSheet.UsedRange.EntireRow.Delete 'вводим данные On Error Resume Next n = Int(InputBox("Введите порядок матрицы", "Ввод данных", 10)) If Err Then Err.Clear MsgBox "Введите целое число от 1 до 10", vbInformation Exit Sub End If 'наполняем массив случайными числами от 1 до 20 ReDim a(1 To n, 1 To n) Randomize For i = 1 To n For j = 1 To n a(i, j) = (20 * Rnd) + 1 Next Next Cells(1, 1).Resize(n, n) = a 'находим максимум по каждой строке и возводим его в квадрат m1 = a(1, 1): m2 = a(2, 1): m3 = a(3, 1): m4 = a(4, 1): m5 = a(5, 1) m6 = a(6, 1): m7 = a(7, 1): m8 = a(8, 1): m9 = a(9, 1): m10 = a(10, 1) For i = 1 To n For j = 1 To n If a(1, j) > m1 Then m1 = (a(1, j)) ^ 2 If a(2, j) > m2 Then m2 = (a(2, j)) ^ 2 If a(3, j) > m3 Then m3 = (a(3, j)) ^ 2 If a(4, j) > m4 Then m4 = (a(4, j)) ^ 2 If a(5, j) > m5 Then m5 = (a(5, j)) ^ 2 If a(6, j) > m6 Then m6 = (a(6, j)) ^ 2 If a(7, j) > m7 Then m7 = (a(7, j)) ^ 2 If a(8, j) > m8 Then m8 = (a(8, j)) ^ 2 If a(9, j) > m9 Then m9 = (a(9, j)) ^ 2 If a(10, j) > m10 Then m10 = (a(10, j)) ^ 2 Next Next Cells(1, n + 2) = m1 Cells(2, n + 2) = m2 Cells(3, n + 2) = m3 Cells(4, n + 2) = m4 Cells(5, n + 2) = m5 Cells(6, n + 2) = m6 Cells(7, n + 2) = m7 Cells(8, n + 2) = m8 Cells(9, n + 2) = m9 Cells(10, n + 2) = m10 End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д