Помогите с созданием макроса excel!
Делаю макрос, который выводит таблицу квадратов (фото), выходит то, что на скрине.
В чем проблема? Относительные ссылки включены. Макрос должен создаваться в активной ячейке
Чтобы создать макрос в Excel для вывода таблицы квадратов, можно воспользоваться следующим кодом на VBA:
Макрос для создания таблицы квадратов в Excel
Sub CreateSquareTable()
Dim startRow As Integer
Dim startCol As Integer
Dim i As Integer
Dim j As Integer
Dim squareValue As Integer
' Указываем активную ячейку
startRow = ActiveCell.Row
startCol = ActiveCell.Column
' Заполняем заголовки
For j = 0 To 9
Cells(startRow, startCol + j + 1).Value = j ' Заголовки столбцов
Next j
For i = 0 To 9
Cells(startRow + i + 1, startCol).Value = i ' Заголовки строк
For j = 0 To 9
squareValue = (i * j) * (i * j) ' Вычисляем квадрат
Cells(startRow + i + 1, startCol + j + 1).Value = squareValue
Next j
Next i
' Установка заголовка таблицы
Cells(startRow, startCol).Value = "Таблица квадратов"
Range(Cells(startRow, startCol), Cells(startRow + 10, startCol + 10)).Borders.LineStyle = xlContinuous ' Добавить границы
End Sub
Как использовать макрос:
1. Открытие редактора VBA:
- Нажмите `ALT + F11` в Excel, чтобы открыть редактор VBA.
2. Создание нового модуля:
- В редакторе VBA выберите `Insert` -> `Module`, чтобы вставить новый модуль.
3. Вставка кода:
- Скопируйте и вставьте приведенный выше код в окно модуля.
4. Запуск макроса:
- Закройте редактор VBA, вернитесь в Excel, выберите ячейку, в которой хотите начать таблицу, и запустите макрос через `ALT + F8`, выбрав `CreateSquareTable`.
После выполнения данного макроса в указанной ячейке будет создана таблица квадратов. Если возникли проблемы с относительными ссылками, убедитесь, что вы запускаете макрос из нужной активной ячейки.
За фото извиняюсь, код сейчас приложу
Код на 15+к символов - не отправляется.
Я не программист, код создает excel сам, а мне бы понять что я делаю не так
ActiveCell.Offset(1, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "0"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "1"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "2"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "3"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "4"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "5"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "6"
ActiveCell.Offset(0, 1).Range("A1").Select
А, теперь понятно. Проблема в строке `ActiveCell.Offset(1, 1).Range("A1").Select` - это создает абсолютную ссылку на A1, что ломает относительное перемещение.
Вместо этого записанного макроса лучше используйте код из моего предыдущего ответа или исправьте свой так:
Sub TableSquare()
' Сохраняем начальную позицию
Dim startCell As Range
Set startCell = ActiveCell
' Создаем заголовки по горизонтали
For i = 0 To 9
startCell.Offset(0, i + 1).Value = i
Next i
' Создаем заголовки по вертикали и заполняем таблицу
For i = 0 To 9
startCell.Offset(i + 1, 0).Value = i
For j = 0 To 9
startCell.Offset(i + 1, j + 1).Value = (i * j) ^ 2
Next j
Next i
End Sub Спасибо! Это наверное из-за того, что я мышкой выделяю таблицу для изменения границы
а нафига тут макрос? прописал формулу и растянул вправо и вниз
Во-первых, зачем тут макрос ?
Во-вторых, ну, видимо, неправильно высчитываешь координаты в макросе.
Мы же не видим твоего макроса, чтобы точнее сказать !