具有多个条件的选择案例函数未循环

Posted

技术标签:

【中文标题】具有多个条件的选择案例函数未循环【英文标题】:Select Case Function with Multiple Criteria is Not Looping 【发布时间】:2013-06-20 22:02:20 【问题描述】:

我是 vba 新手,也是我第一次使用“Select Case”。简而言之,我试图通过查找“cust_num”列标题并遍历每一行来循环(行数将在一张纸之间变化),如果 cust_num 与特定行的标准匹配,则“Barco”将被放入“公司名称”列下的同一行。

当我编译时,“Barco”只放在第一行下面,所以似乎没有循环遍历每一行,示例如下。

XX278        Barco
XX004   
XX004   
XX278   
XX004   
XX004   
XX278   
XX278   





Dim Nu As Range
    Dim cmpny As Range
    Dim v As Integer
    Dim y As Integer

    v = ActiveSheet.Rows(1).Find("customer_name", LookAt:=xlPart).End(xlDown).Count - 1 
'count number of rows

    Set Nu = ActiveSheet.Rows(1).Find("cust_num", LookAt:=xlPart) 'set Nu = cust_num column header
    Set cmpny = ActiveSheet.Rows(1).Find("company name", LookAt:=xlPart) 'set cmpny = company name column

    For y = 0 To v 'loop through each row
            Select Case Nu.Offset(1 + y, 0).Value 'row 1 + y of "cust_num"
            Case "XX004", "XX278", "XX318" 'if "cust_num" row = these #'s
                 cmpny.Offset(1 + y, 0).Value = "Barco" 'Then corresponding row under "company name" column = "Varco"
            End Select
    Next

【问题讨论】:

Select Case Nu.Offset(... 感谢@TimWilliams 修复了错误。当我运行宏时,它会将“Barco”放在与 cust_num 匹配的第一行,但似乎没有遍历任何其他行。我试图将设置范围放在 For 循环中,但这似乎不起作用。有任何想法吗?再次感谢! 你能用当前代码更新你的问题吗? 当然,我已经更新了问题并包含了当前代码。感谢您的浏览,非常感谢。 我没有看到任何明显的问题:您是否尝试在循环中设置断点以检查它是否看到您期望的值? (例如)您的公司号码可能有额外的空格或类似的东西。添加一些debug.print 语句,以便您可以检查您对(例如)v 值的假设 【参考方案1】:

有了@TimWilliams 的帮助,我的代码现在可以工作了。这使用 Select Case 函数遍历指定的行并确定该单元格是否满足条件,如果满足,则在条件单元格右侧的同一行中插入名称(在本例中为 cust_num)。

Dim Nu As Range
Dim cmpny As Range
Dim v As Integer
Dim y As Integer

v = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row 'count number of rows 
'count number of rows

Set Nu = ActiveSheet.Rows(1).Find("cust_num", LookAt:=xlPart) 'set Nu = cust_num column header
Set cmpny = ActiveSheet.Rows(1).Find("company name", LookAt:=xlPart) 'set cmpny = company name column

For y = 0 To v 'loop through each row
        Select Case Nu.Offset(1 + y, 0).Value 'row 1 + y of "cust_num"
        Case "XX004", "XX278", "XX318" 'if "cust_num" row = these #'s
             cmpny.Offset(1 + y, 0).Value = "Barco" 'Then corresponding row under "company name" column = "Varco"
        End Select
Next

【讨论】:

以上是关于具有多个条件的选择案例函数未循环的主要内容,如果未能解决你的问题,请参考以下文章

VBA案例选择多个条件

具有多个条件的数据表选择

具有多个条件的JS三元函数?

选择具有多个条件的多个列

实体框架 - 具有多个条件的异步选择

使用切换方法选择具有条件的多个元素