求教大佬VBA中如何完成循环计算?

酒饮风尘醉 2020-04-13 11:58:44
图中的代码只能完成第2行到第33行的计算,现在我想要完成整列所有有数字的计算,请问应该怎么改?
...全文
235 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
milaoshu1020 2020-04-13
  • 打赏
  • 举报
回复
可以用UsedRange来得到已使用的数据范围;
酒饮风尘醉 2020-04-13
  • 打赏
  • 举报
回复
引用 3 楼 milaoshu1020的回复:
试试这样行不行(还没测试过):

Sub 运算并画图()
    Dim r As Integer, x As String, y As String, op As String, z As Single
    For r = 2 To 9999
        x = Worksheets(1).Range("A" & r)
        y = Worksheets(2).Range("A" & r)
        op = Worksheets(3).Range("A" & r)
        If x <> "" And y <> "" And op <> "" Then
            Select Case Worksheets(3).Range("A" & r)
            Case "+"
                z = CInt(x) + CInt(y)
            Case "-"
                z = CInt(x) - CInt(y)
            Case "*"
                z = CInt(x) * CInt(y)
            Case "/"
                z = CInt(x) / CInt(y)
            End Select
            Worksheets(4).Range("A" & r) = z
        End If
        DoEvents
    Next
End Sub
谢谢大佬指教!不过还有一个小问题需要麻烦一下,计算不是真的到A9999,只是一个虚指,因为不确定会有多少个数据。
milaoshu1020 2020-04-13
  • 打赏
  • 举报
回复
试试这样行不行(还没测试过):

Sub 运算并画图()
    Dim r As Integer, x As String, y As String, op As String, z As Single
    For r = 2 To 9999
        x = Worksheets(1).Range("A" & r)
        y = Worksheets(2).Range("A" & r)
        op = Worksheets(3).Range("A" & r)
        If x <> "" And y <> "" And op <> "" Then
            Select Case Worksheets(3).Range("A" & r)
            Case "+"
                z = CInt(x) + CInt(y)
            Case "-"
                z = CInt(x) - CInt(y)
            Case "*"
                z = CInt(x) * CInt(y)
            Case "/"
                z = CInt(x) / CInt(y)
            End Select
            Worksheets(4).Range("A" & r) = z
        End If
        DoEvents
    Next
End Sub
酒饮风尘醉 2020-04-13
  • 打赏
  • 举报
回复
引用 1 楼 吉祥编程的回复:
如果所有列都有内容,可用如下格式:
Dim r as Integer
r=2
Do while Worksheet(1).Range("A" & r).Text<>"" and Worksheet(2).Range("A" & r).Text<>""
Do while IsNumeric(Worksheet(1).Range("A" & r).Text) and IsNumeric(Worksheet(2).Range("A" & r).Text)


内容计算


loop
r=r+1
loop

获取更多VBA知识,请关注 吉祥编程 公众号
这个我试了一下,一运行就好卡死excel
吉祥编程 2020-04-13
  • 打赏
  • 举报
回复
如果所有列都有内容,可用如下格式:
Dim r as Integer
r=2
Do while Worksheet(1).Range("A" & r).Text<>"" and Worksheet(2).Range("A" & r).Text<>""
Do while IsNumeric(Worksheet(1).Range("A" & r).Text) and IsNumeric(Worksheet(2).Range("A" & r).Text)


内容计算


loop
r=r+1
loop

获取更多VBA知识,请关注 吉祥编程 公众号

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧