【问题标题】:How to define range for next loop in VBA如何在 VBA 中定义下一个循环的范围
【发布时间】:2020-07-27 03:47:43
【问题描述】:

我是新手,我正在努力学习 VBA(对于英语中的任何错误,抱歉,我不是母语人士)。 我正在尝试解决以下任务: “创建一个程序,在Excel中输出11到20的乘法表值,如下图:”

multiplication table

这是我的代码:

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)"* 

但它不起作用。

非常感谢您的帮助

【问题讨论】:

  • A1 是Cells(1,1),因此您需要调整循环,或调整Cells(x, y)
  • For x = 1 to 10For y = 1 to 10Cells(x, y) = (x+10) * (y + 10)。或者使用类似的逻辑调整Cells(x, y)

标签: excel vba for-loop range


【解决方案1】:

事实上,您的公式方法更好,因为它避免了循环。

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

【讨论】:

    【解决方案2】:

    您可以从每个 x 和 y 坐标中减去 10

    例如,x = 11y = 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
    

    【讨论】:

      【解决方案3】:

      如果您想对代码进行更多控制并且您打算重复使用它,那么您可以这样做。即使是 11-20 或任何其他数字也无所谓。

      还建议您使用工作表引用来引用单元格,这样当您继续时,引用就不会出现问题。 EG : Sheet1.Cells (y,x)

      给你 - 函数。

      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
      

      希望对你有帮助

      楚斯

      【讨论】:

        猜你喜欢
        • 2013-08-10
        • 2020-08-08
        • 2019-11-14
        • 1970-01-01
        • 1970-01-01
        • 2017-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多