AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1701402
Accepted
wyatt7613
wyatt7613
Asked: 2022-01-26 21:12:23 +0800 CST2022-01-26 21:12:23 +0800 CST 2022-01-26 21:12:23 +0800 CST

Excel VBA - 如果语句检查值是否在数组中

  • 772

我有很多变量存储在一个数组中。我正在尝试使用 If Then 语句来查看特定单元格的值是否在该数组中。这是我的代码:

Dim Vars1 As Variant
Vars1 = Array("Stage 2", "Stage 3", "Stage 4", "Stage 5", "Stage 6", "Stage 7", "WIP Cleanup", 
"Road Test", "Test", "Test Cleanup", "In Bay Inspection", "In Bay Clean Up", "PDI", "PDI 
Cleanup", "Verify", "Complete", "Pictures", "Remove", "ECD", "Platform Install", "#N/A")
'Cuts special delivery parts for Line 3
For RowCounter = LastRow To 1 Step -1
    If InStr(1, Range("F" & RowCounter), "underslung", vbTextCompare) Then 'Underslung
        If Range("B" & RowCounter).Value = "FA Line 3" And Range("N" & RowCounter).Value = Vars1 Then
            Rows(RowCounter).EntireRow.Cut _
                Destination:=Sheets("FA3").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        End If
    End If
Next RowCounter

我认为代码不起作用,因为它没有剪切和粘贴行。如何获取 if then 语句来检查“Range("N" & RowCounter)”中的值是否在数组中?

microsoft-excel microsoft-excel-2010
  • 2 2 个回答
  • 2538 Views

2 个回答

  • Voted
  1. Best Answer
    njc
    2022-01-26T22:19:57+08:002022-01-26T22:19:57+08:00
    ...And Range("N" & RowCounter).Value = Vars1 Then
    

    这部分代码,您将单个值与数组进行比较。您应该检查该值是否在数组中。我不知道是否有执行此操作的 Excel VBA 函数。编写一个测试值是否在数组中的函数并不难。这是一个想法,

    Option Explicit
    Option Base 0
    
    Function InArray(ByVal pstrVal As String, ByVal pvntArray As Variant) As Boolean
    
        Dim lngIdx As Long
    
        For lngIdx = 0 To UBound(pvntArray)
        
            If (pstrVal = VBA.CStr(pvntArray(lngIdx))) Then
                InArray = True
                Exit Function
            End If
        
        Next lngIdx
    
        InArray = False
    End Function
    

    为了测试这个功能,

    Sub Testing123()
    
        Dim Vars1 As Variant
    
        Vars1 = Array("Stage 2", "Stage 3", "Stage 4", "Stage 5", "Stage 6", "Stage 7", "WIP Cleanup", _
                  "Road Test", "Test", "Test Cleanup", "In Bay Inspection", "In Bay Clean Up", "PDI", "PDI", _
                  "Cleanup", "Verify", "Complete", "Pictures", "Remove", "ECD", "Platform Install", "#N/A")
    
    
        Debug.Print InArray("Testar", Vars1)
        Debug.Print InArray("Test", Vars1)
        Debug.Print InArray("In Bay Inspection", Vars1)
        Debug.Print InArray("Out Bay Inspection", Vars1)
    End Sub
    

    所以,如果你有你的情况,在我回答的第一行,试试这个;

    ...And InArray(Range("N" & RowCounter).Value, Vars1) Then
    

    希望这可以帮助

    新泽西州

    • 1
  2. JohnSUN
    2022-01-27T01:05:06+08:002022-01-27T01:05:06+08:00

    解决此问题的另一种方法是停止将常量描述为数组。将其描述为

    Const Vars1 As String = "Stage 2" & vbTab & "Stage 3" & vbTab & "Stage 4" & vbTab _
        & "Stage 5" & vbTab & "Stage 6" & vbTab & "Stage 7" & vbTab _
        & "WIP Cleanup" & vbTab & "Road Test" & vbTab & "Test" & vbTab _
        & "Test Cleanup" & vbTab & "In Bay Inspection" & vbTab & "In Bay Clean Up" & vbTab _
        & "PDI" & vbTab & "PDI Cleanup" & vbTab & "Verify" & vbTab & "Complete" & vbTab _
        & "Pictures" & vbTab & "Remove" & vbTab & "ECD" & vbTab & "Platform Install" & vbTab & "#N/A"
    
    

    并使用与InStr(...)F 列相同的方法

    • 0

相关问题

  • 如何对整列使用 Excel 的 LENGTH 函数?

  • Excel 数组(2 个变量)

  • 如何从 WSL 打开 office 文件

  • VBA根据文件名重命名工作表

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve