ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1399|回复: 9

[求助] 数组判断的VBA?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-11-28 17:44 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
数组如下:
       arr = Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
       For i = 0 To UBound(arr)
文本框右边的字符是: Right(TextBox2, Len(Mid(arr(i), 1)))
以上是从网上搜来的
如果 Right(TextBox2, Len(Mid(arr(i), 1)))不等于 arr其中的一个,则,显示”没有找见“
该语句怎么写?谢谢      
      

TA的精华主题

TA的得分主题

发表于 2015-11-28 18:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1.   Dim Arr(), i As Integer
  2.   Arr = Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
  3.   For i = 0 To UBound(Arr)
  4.     If InStr(Arr(i), Right(TextBox2, Len(Mid(Arr(i), 1)))) Then MsgBox "第" & i + 1 & "项被找到!": Exit Sub
  5.   Next
  6.   MsgBox "没有找见!"
复制代码

  1.   Dim Arr()
  2.   Arr = Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
  3.   MsgBox IIf(InStr("," & Join(Arr(), ",") & ",", "," & TextBox2 & ","), "找到!", "没有找到!")
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-28 22:08 | 显示全部楼层
本帖最后由 ke3088 于 2015-11-28 22:12 编辑

kqbt版主,不行呀。
If InStr(Arr(i), Right(TextBox2, Len(Mid(Arr(i), 1))))<>? Then
……'要进行其他操作   
End If要把问号处改一改才行。
我进行MsgBox InStr(Arr(i), Right(TextBox2, Len(Mid(Arr(i), 1))))j时,都是=0 
谢谢!

TA的精华主题

TA的得分主题

发表于 2015-11-29 09:01 | 显示全部楼层
ke3088 发表于 2015-11-28 22:08
kqbt版主,不行呀。
If InStr(Arr(i), Right(TextBox2, Len(Mid(Arr(i), 1))))? Then
……'要进行其他 ...

不知道你的TextBox具体什么情况,代入字符串测试如下:
  1.   Dim Arr(), i As Integer
  2.   Arr = Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
  3.   For i = 0 To UBound(Arr)
  4.     If InStr(Arr(i), Right("移动硬盘", Len(Mid(Arr(i), 1)))) <> 0 Then
  5.        MsgBox "第" & i + 1 & "项被找到!": Exit Sub
  6.     End If
  7.   Next
  8.   MsgBox "没有找见!"
复制代码

TA的精华主题

TA的得分主题

发表于 2015-11-29 09:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
另外:Mid(Arr(i), 1) 这个有何用意?
len(Mid(Arr(i), 1)) <> len(Arr(i)) ?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-29 12:28 | 显示全部楼层
本帖最后由 ke3088 于 2015-11-29 12:36 编辑
kqbt 发表于 2015-11-29 09:03
另外:Mid(Arr(i), 1) 这个有何用意?
len(Mid(Arr(i), 1))  len(Arr(i)) ?

原代码是:
   arr =Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
       For i = 0 To UBound(arr)
       If Right(TextBox2, Len(Mid(arr(i), 1))) = arr(i) Then         
          库存.Hide '窗体,显示:Show,隐藏:Hide
          支出.Show '窗体,显示:Show,隐藏:Hide
          Exit Sub
       End If
       Next
上面的代码是TextBox2右边字符(取出右边的长度根据arr判断)包含有arr里的字符,就如何
我现在想改成,TextBox2右边字符(取出右边的长度根据arr判断)与arr比较,如果不包含arr里的字符,就如何。
再请您看看,谢谢
另外,TextBox2里的字符有若干个,不定,多时有几十个,少则一个

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-30 16:08 | 显示全部楼层
4楼的语句,成立:
  Dim Arr(), i As Integer
  Arr = Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
  For i = 0 To UBound(Arr)
    If InStr(Arr(i), Right("移动硬盘", Len(Mid(Arr(i), 1)))) <> 0 Then
       MsgBox "第" & i + 1 & "项被找到!": Exit Sub
    End If
  Next
  MsgBox "没有找见!"
但是,稍作改动,就不行了:
  Dim Arr(), i As Integer
  Arr = Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
  For i = 0 To UBound(Arr)
    If InStr(Arr(i), Right("移动硬盘", Len(Mid(Arr(i), 1)))) <> 0 Then         
         MsgBox "找到了-----" : Exit Sub
      Else
        MsgBox "没有+++++++": Exit Sub
      End If
  Next
请大家,帮看看是怎么回事?谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-30 16:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ke3088 于 2015-12-1 00:47 编辑

6楼的代码,测试时没有问题:
Sub aa()
  Dim Arr(), i As Integer
  Arr = Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
  mnText = "从字符串右边取出的字符是--路由器"
  For i = 0 To UBound(Arr)
      If Right(mnText, Len(Mid(Arr(i), 1))) = Arr(i) Then
         MsgBox "从字符串右边取出的字符是-----" & Right(mnText, Len(Mid(Arr(i), 1)))
         MsgBox "找到了++++" & Arr(i): Exit Sub
      End If
  Next
End Sub
一旦加上Else,和4楼的代码一样,就不行了:Sub aa()
  Dim Arr(), i As Integer
  Arr = Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
  mnText = "从字符串右边取出的字符是--路由器"
  For i = 0 To UBound(Arr)
      If Right(mnText, Len(Mid(Arr(i), 1))) = Arr(i) Then
         MsgBox "从字符串右边取出的字符是-----" & Right(mnText, Len(Mid(Arr(i), 1)))
         MsgBox "找到了++++" & Arr(i): Exit Sub
      Else
         MsgBox "没有呀": Exit Sub
      End If
  Next
End Sub
请大家看看问题出在什么地方?谢谢



TA的精华主题

TA的得分主题

发表于 2015-12-1 21:33 | 显示全部楼层
ke3088 发表于 2015-11-30 16:32
6楼的代码,测试时没有问题:
Sub aa()
  Dim Arr(), i As Integer

为何要在这个位置加入 else ?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-1 22:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub aa()
  Dim Arr(), i As Integer
  Arr = Array("手机", "U盘", "耳机", "硬盘", "主板", "机箱", "电源", "路由器", "内存卡")
  mnText = "从字符串右边取出的字符是--路由器"
  For i = 0 To UBound(Arr)
      If Right(mnText, Len(Mid(Arr(i), 1))) = Arr(i) Then
         MsgBox "从字符串右边取出的字符是-----" & Right(mnText, Len(Mid(Arr(i), 1)))
         MsgBox "找到了++++" & Arr(i): Exit Sub
      End If
  Next
End Sub
我想改成,mnText右边字符(取出右边的长度根据arr判断)与arr比较,如果不包含arr里的字符,就如何。
不过,已解决
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-15 14:14 , Processed in 0.022571 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表