gpt4 book ai didi

Excel VB For循环没有遍历if语句

转载 作者:行者123 更新时间:2023-12-04 21:17:34 26 4
gpt4 key购买 nike

我很欣赏这是一个业余问题,但我不习惯 VB 及其语法。

我正在尝试根据数量(QTY)列中是否存在值将信息从一个工作表(ProductList)拉到另一个(报价)。

这是我的方法:

Private Sub cmdProductListContinue_Click()

'Declare variabless
Dim i, duration, qty, outputX, outputY

'Set initial values
duration = 120 'Used to determine number of iterations in for loop (no. of QTY cells we are to check)
i = 3 'Used as cell co-ordinates to pull information from
outputX = 17 'Used as cell co-ordinates to output information

'Populate invoice with product info by iterating through all QTY cells and pulling across info if needed
For i = 3 To duration
'Reset quantity to zero each time
qty = 0
'Set quantity to the value in the QTY cell
Set qty = Worksheets("ProductList").Cells(i, 3)
'If there is a quantity value present
If qty > 0 Then
'Insert quantity value into appropriate cell in quote sheet
Worksheets("Quote").Cells(outputX, 2) = qty
'Insert description into quote sheet
Worksheets("Quote").Cells(outputX, 3) = Worksheets("ProductList").Cells(i, 2)
'Insert unit price into quote sheet
Worksheets("Quote").Cells(outputX, 4) = Worksheets("ProductList").Cells(i, 4)
'Increment the output co-ordinates to the next line
outputX = outputX + 1
End If
Next i

'Open quote sheet
Sheets("Quote").Select

End Sub

使用断点我可以看到,当有一个数量值时,它成功地移动到第一个“Then”语句,但似乎只是返回到循环的开头,完全错过了其他两个输出行。

我的语法正确吗?我的逻辑是否遗漏了什么?

我很感激如果没有表格来查看数据列等,可能很难考虑清楚这一点。

'i' 设置为 3,因为数量列的第一个值位于单元格 C,3 中,描述在 C,2 中,价格在 C,4 中。然后这些通过循环递增。

对此的任何帮助将不胜感激。

谢谢!!

最佳答案

在这里,您将 qty 分配给 对象 (范围):

Set qty = Worksheets("ProductList").Cells(i, 3)

如果您想获取单元格 值(value) 然后使用:
qty = Worksheets("ProductList").Cells(i, 3).Value

分配对象时使用“Set”,因此此处不需要它。 “值”是默认属性,但无论如何我更喜欢包含它。

稍微修改您的代码:
Private Sub cmdProductListContinue_Click()

Dim i, duration, qty, outputX
Dim wsQuote As Worksheet, wsProd As Worksheet

Set wsQuote = Worksheets("Quote")
Set wsProd = Worksheets("ProductList")

duration = 120
outputX = 17

For i = 3 To duration
qty = wsProd.Cells(i, 3).Value
If qty > 0 Then
With wsQuote.Rows(outputX)
.Cells(2).Value = qty
.Cells(3).Value = wsProd.Cells(i, 2).Value
.Cells(4).Value = wsProd.Cells(i, 4).Value
outputX = outputX + 1
End With
End If
Next i

wsQuote.Activate

End Sub

关于Excel VB For循环没有遍历if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6189545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com