Как определить диапазон для следующего l oop в VBA - PullRequest
1 голос
/ 14 апреля 2020

Я новичок ie, и я пытаюсь выучить VBA (извините за любую ошибку в Engli sh, я не являюсь носителем языка). Я пытаюсь решить следующее назначение: «Создать процедуру, которая выводит значения таблицы умножения от 11 до 20 в Excel, как показано ниже:«

таблица умножения

Это мой код:

Sub einmaleins()
Dim x As Integer, y As Integer
For x = 11 To 20
For y = 11 To 20
Cells(x, y) = x * y
Next
Next
End Sub

Работает, но ставит таблицу от K11 до S20. Мне нужно, чтобы ввести значения от A1 до J10 Я пытался

*Range("A1:J10").FormulaR1C1 = "=ROW(RC)*COLUMN(RC)"* 

, но это не работает.

Помощь очень ценится

Ответы [ 3 ]

3 голосов
/ 14 апреля 2020

На самом деле ваш подход к формуле лучше, чем избегает всех oop.

Range("A1:J10").FormulaR1C1 = "=(ROW(RC)+10)*(COLUMN(RC)+10)"
0 голосов
/ 14 апреля 2020

Здесь вы go, если вы хотите больше контроля над кодом и планируете использовать его повторно. Это не имеет значения, даже если это 11-20 или любое другое число.

Также рекомендуется указывать ячейку со ссылкой на лист, чтобы при включении go у вас не возникало проблем со ссылками. Например: Sheet1.Cells (y, x)

Здесь вы go - функция.

Function einmaleins(fNumber As Integer, lNumber As Integer) As Integer

    Dim x, y As Integer

    For x = fNumber To lNumber

        For y = fNumber To lNumber
                Sheet1.Cells(x - (fNumber - 1), y - (fNumber - 1)) = x * y
        Next
    Next

    End Function

// Вызов функции

Sub multiTable()
 Call einmaleins(11, 20)
End Sub

Надеюсь, это поможет

Tschüss

0 голосов
/ 14 апреля 2020

Вы можете вычесть 10 из каждой координаты x и y.

Например, x = 11 и y = 11 дадут cells(1, 1).

Sub einmaleins()
    Dim x As Integer, y As Integer

    For x = 11 To 20
        For y = 11 To 20
            Cells(x - 10, y - 10) = x * y
        Next
    Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...