Excel VB For循环未遍历if语句

如何解决Excel VB For循环未遍历if语句

| 我很欣赏这是一个业余问题,但是我不习惯VB及其语法。 我试图根据数量(QTY)列中是否有值,将信息从一个工作表(产品列表)转移到另一个工作表(报价)。 这是我的方法:
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中。然后通过循环将其递增。 任何帮助,将不胜感激。 谢谢!!     

解决方法

        在这里,您要为对象(范围)分配数量:
Set qty = Worksheets(\"ProductList\").Cells(i,3)
如果您想获取单元格值,请使用:
qty = Worksheets(\"ProductList\").Cells(i,3).Value
分配对象时使用\“ Set \”,因此您在这里不需要它。 \“ Value \”是默认属性,但是无论如何我还是希望包含它。 稍微修改一下代码:
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
    ,        
Set qty = Worksheets(\"ProductList\").Cells(i,i)
这个!将遍历工作表的对角线,就像 C3,D4,E5等 您可能想要类似
Set qty = Worksheets(\"ProductList\").Cells(i,3)
要么
Set qty = Worksheets(\"ProductList\").Cells(3,i)
还要检查对ProductList表的其他引用(行尾):
\'Insert description into quote sheet
Worksheets(\"Quote\").Cells(outputX,outputY + 1) = Worksheets(\"ProductList\").Cells(i,i - 1)
\'Insert unit price into quote sheet
Worksheets(\"Quote\").Cells(outputX,outputY + 2) = Worksheets(\"ProductList\").Cells(i,i + 1)
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-