【问题标题】:VBA: Loop multiplication until specific valueVBA:循环乘法直到特定值
【发布时间】:2017-08-21 17:24:29
【问题描述】:

我正在尝试在 Word VBA 中创建一个循环,该循环将文本框输入中的任何给定数字相乘,但答案不应超过数字 100。

这就是我现在所拥有的:

Dim varcounter As Integer
Dim varnumber As Integer
Dim varcx As String

Private Sub CommandButton1_Click()
 varnumber = Val(TextBox1)
 varcounter = 1
 While solution < 100
  varcx = varcounter
  varcx = varcx & " x "
  varcx = varcx & varnumber
  varcx = varcx & " = "
  solution = varcounter * varnumber
  varcx = varcx & solution 

  ListBox1.AddItem (varcx)

  varcounter = varcounter + 1
 Wend

End Sub

这段代码的问题是它总是会超过或等于100,因为前面的乘法不满足条件。如何更改此代码以使其不超过 100?提前致谢!

【问题讨论】:

  • 类似while varcounter * varnumber&gt;100
  • 顺便说一句,乘法符号(例如×不是x)是Chr(215)
  • 而@Nathan_Sav 你的意思是“”
  • 是的,对不起

标签: vba loops ms-word


【解决方案1】:

您只需检查 foreseen 值:

Private Sub CommandButton1_Click()
    varnumber = Val(TextBox1)
    While solution + varnumber < 100
        varcounter = varcounter + 1
        solution = varcounter * varnumber
        varcx = varcounter & " x " & varnumber & " = " & solution
        ListBox1.AddItem (varcx)
    Wend
End Sub

【讨论】:

    【解决方案2】:

    预加载带有计算终止的For ... Next 循环。

    Option Explicit
    
    Dim varcounter As Integer
    Dim varnumber As Integer
    Dim varcx As String
    
    Private Sub CommandButton1_Click()
        varnumber = Val(TextBox1)
        For varcounter = 1 To Int(99.999 / varnumber)
            varcx = varcounter & Chr(32) & Chr(215) & Chr(32) & varcounter * varnumber
            Debug.Print varcx
            ListBox1.AddItem varcx
        Next varcounter
    
    End Sub
    

    我使用 99.999 而不是 100,因为您想要“小于”而不是“小于或等于”。使用Int(...) 而不是CInt(...)CInt(...) 将四舍五入,而 Int(...) 通过去除任何小数部分来四舍五入。

    【讨论】:

      猜你喜欢
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 2022-12-31
      相关资源
      最近更新 更多