Задание:Создать динамический массив, посчитать сумму каждой строки,найти максимальную сумму строки и окрасить ее в красный цвет.Я нашел максимальную сумму, но не знаю как окрасить в красный.Что нужно добавить после If Sum > Max Then Max = Sum? [vba]
Код
Sub massivchik() Dim a() As Integer Dim j, i, m, n As Integer Worksheets("Лист1").Select Cells.Clear n = InputBox("Введите количество строк") m = InputBox("Введите количество столбцов") ReDim a(1 To n, 1 To m) For i = 1 To n For j = 1 To m a(i, j) = Int(100 * Rnd) Next j Next i For i = 1 To n For j = 1 To m Cells(i + 1, j + 1) = a(i, j) Cells(i + 1, j + 1).Interior.Color = vbGreen Cells(i + 1, j + 1).Borders.Color = vbBlack Next j Next i For i = 1 To n Sum = 0 For j = 1 To m Sum = Sum + a(i, j) Next j Cells(i + 1, m + 2) = Sum Cells(i + 1, m + 2).Interior.Color = vbCyan Cells(i + 1, m + 2).Borders.Color = vbBlack If Sum > Max Then Max = Sum Next i MsgBox Max End Sub
[/vba]
Задание:Создать динамический массив, посчитать сумму каждой строки,найти максимальную сумму строки и окрасить ее в красный цвет.Я нашел максимальную сумму, но не знаю как окрасить в красный.Что нужно добавить после If Sum > Max Then Max = Sum? [vba]
Код
Sub massivchik() Dim a() As Integer Dim j, i, m, n As Integer Worksheets("Лист1").Select Cells.Clear n = InputBox("Введите количество строк") m = InputBox("Введите количество столбцов") ReDim a(1 To n, 1 To m) For i = 1 To n For j = 1 To m a(i, j) = Int(100 * Rnd) Next j Next i For i = 1 To n For j = 1 To m Cells(i + 1, j + 1) = a(i, j) Cells(i + 1, j + 1).Interior.Color = vbGreen Cells(i + 1, j + 1).Borders.Color = vbBlack Next j Next i For i = 1 To n Sum = 0 For j = 1 To m Sum = Sum + a(i, j) Next j Cells(i + 1, m + 2) = Sum Cells(i + 1, m + 2).Interior.Color = vbCyan Cells(i + 1, m + 2).Borders.Color = vbBlack If Sum > Max Then Max = Sum Next i MsgBox Max End Sub
Не стоит называть переменные Sum и Max. Есть такие внутренние названия в VBA. Я вот, например, чтобы точно не ошибиться, переменные обзываю с нижним подчеркиванием, вот так - "Sum_" И, кстати, Вы не всё объявили. А второй Дим вообще неверный - там Интеджер только n, остальные Вариант
[vba]
Код
Sub massivchik() Dim a() As Integer Dim j, i, m, n As Integer Worksheets("Лист1").Select Cells.Clear n = InputBox("Введите количество строк") m = InputBox("Введите количество столбцов") Application.ScreenUpdating = False ReDim a(1 To n, 1 To m + 1) For i = 1 To n For j = 1 To m a(i, j) = Int(100 * Rnd) Next j Next i ' For i = 1 To n ' For j = 1 To m ' Cells(i + 1, j + 1) = a(i, j) ' Cells(i + 1, j + 1).Interior.Color = vbGreen ' Cells(i + 1, j + 1).Borders.Color = vbBlack ' Next j ' Next i For i = 1 To n Sum = 0 For j = 1 To m Sum = Sum + a(i, j) Next j a(i, m + 1) = Sum ' Cells(i + 1, m + 2).Interior.Color = vbCyan ' Cells(i + 1, m + 2).Borders.Color = vbBlack If Sum > Max Then Max = Sum r = i End If Next i Cells(2, 2).Resize(n, m + 1) = a Cells(2, 2).Resize(n, m + 1).Borders.Color = vbBlack Cells(2, 2).Resize(n, m).Interior.Color = vbGreen Cells(2, m + 2).Resize(n).Interior.Color = vbCyan Cells(r + 1, 2).Resize(, m + 1).Interior.Color = vbRed Application.ScreenUpdating = True MsgBox Max End Sub
[/vba]
Не стоит называть переменные Sum и Max. Есть такие внутренние названия в VBA. Я вот, например, чтобы точно не ошибиться, переменные обзываю с нижним подчеркиванием, вот так - "Sum_" И, кстати, Вы не всё объявили. А второй Дим вообще неверный - там Интеджер только n, остальные Вариант
[vba]
Код
Sub massivchik() Dim a() As Integer Dim j, i, m, n As Integer Worksheets("Лист1").Select Cells.Clear n = InputBox("Введите количество строк") m = InputBox("Введите количество столбцов") Application.ScreenUpdating = False ReDim a(1 To n, 1 To m + 1) For i = 1 To n For j = 1 To m a(i, j) = Int(100 * Rnd) Next j Next i ' For i = 1 To n ' For j = 1 To m ' Cells(i + 1, j + 1) = a(i, j) ' Cells(i + 1, j + 1).Interior.Color = vbGreen ' Cells(i + 1, j + 1).Borders.Color = vbBlack ' Next j ' Next i For i = 1 To n Sum = 0 For j = 1 To m Sum = Sum + a(i, j) Next j a(i, m + 1) = Sum ' Cells(i + 1, m + 2).Interior.Color = vbCyan ' Cells(i + 1, m + 2).Borders.Color = vbBlack If Sum > Max Then Max = Sum r = i End If Next i Cells(2, 2).Resize(n, m + 1) = a Cells(2, 2).Resize(n, m + 1).Borders.Color = vbBlack Cells(2, 2).Resize(n, m).Interior.Color = vbGreen Cells(2, m + 2).Resize(n).Interior.Color = vbCyan Cells(r + 1, 2).Resize(, m + 1).Interior.Color = vbRed Application.ScreenUpdating = True MsgBox Max End Sub
_Boroda_, спасибо вам большое, а вы не знаете, можно ли сделать подобное без Resize? И чтобы выделялась не вся строка с максимальным значением,а только само максимальное значение среди сумм других строк)
_Boroda_, спасибо вам большое, а вы не знаете, можно ли сделать подобное без Resize? И чтобы выделялась не вся строка с максимальным значением,а только само максимальное значение среди сумм других строк)lolo25