精华内容
下载资源
问答
  • VBA中冗长的多条件判断如何破

    千次阅读 2019-01-31 04:48:34
    判断语句是VBA中经常用到的代码,语法格式也很简单,但是有些场景中判断条件有很,如下面代码所示。并且字段不断增多,程序中需要进行判断的地方有处,每次增加判断条件都要改处,既麻烦又容易出错。 If ...

    判断语句是VBA中经常用到的代码,语法格式也很简单,但是有些场景中判断条件有很多,如下面代码所示。并且字段不断增多,程序中需要进行判断的地方有多处,每次增加判断条件都要改多处,既麻烦又容易出错。

    If strCell = "姓名" Or strCell = "班级" Or strCell = "学号" Or _
    			strCell = "课程" Or strCell = "学分" Or strCell = "成绩" Then
    

    其实这种多判断条件可以简化(结构简化,代码行数需要增加,呵呵)。

    • 方法一:使用数组(或者字典),关键字保存在数组中,便于日后维护,利用循环进行判断,然后根据判断结果进行后续的处理。其中strCell是需要判断的字符串。对于每个字符串都需要循环判断多次,循环执行的次数取决于字符串在关键字数组中的位置,如果不在其中,那么就需要执行全部的循环,即6次,因此这个方法效率不高。
    Option Explicit
    Sub MultipleConditions1()
        Dim arrKey
        Dim strCell As String
        Dim i As Integer
        Dim blnFlag As Boolean
        blnFlag = False
        strCell = "学号"
        arrKey = Array("姓名", "班级", "学号", "课程", "学分", "成绩")
        For i = UBound(arrKey) To UBound(arrKey)
            If blnFlag = blnFlag Or (strCell = arrKey(i)) Then
                blnFlag = True
                Exit For
            End If
        Next i
        If blnFlag Then
            Debug.Print ("匹配关键字")
        Else
            Debug.Print ("无匹配关键字")
        End If
    End Sub
    
    • 方法二:与上面方法相同,关键字保存在数组中,不同之处在于使用Join函数先将关键字数组组合为一个字符串,然后再使用Instr判断一次就可以了,相应的代码效率得到了提升,特别是对于关键字数组元素多的应用场景中。
    Sub MultipleConditions2()
        Dim arrKey
        Dim strKey
        Dim strCell As String
        Dim i As Integer
        Dim blnFlag As Boolean
        blnFlag = False
        strCell = "学号"
        arrKey = Array("姓名", "班级", "学号", "课程", "学分", "成绩")
        strKey = VBA.Join(arrKey, "|")
        If VBA.InStr(strKey, strCell) > 0 Then
            Debug.Print ("匹配关键字")
        Else
            Debug.Print ("无匹配关键字")
        End If
    End Sub
    
    • 方法三:使用Like运算符进行判断,也可以实现同样的效果。
    Sub MultipleConditions3()
        Dim arrKey
        Dim strKey
        Dim strCell As String
        Dim i As Integer
        Dim blnFlag As Boolean
        blnFlag = False
        strCell = "学号"
        arrKey = Array("", "姓名", "班级", "学号", "课程", "学分", "成绩", "")
        strKey = VBA.Join(arrKey, "|")
        If strKey Like ("*|" & strCell & "|*") Then
            Debug.Print ("匹配关键字")
        Else
            Debug.Print ("无匹配关键字")
        End If
    End Sub
    

    以上三种方法,都只需要在代码中维护一处关键字数组就可以了,判断条件增多了,也无需对其他部分代码进行更新和调整。

    展开全文
  • VBA第5课 select多条件判断

    万次阅读 2015-05-01 11:40:05
    Sub select多条件判断() Select Case Sheet1.[b1].Value Case Is > 0 MsgBox "大于0" Case Else MsgBox "小于或等于0" End Select End Sub Sub select多条件判断2() Select Case Sheet1.[b1].Value Case "12" Sheet...
    Sub select多条件判断()
    Select Case Sheet1.[b1].Value
    Case Is > 0
    MsgBox "大于0"
    Case Else
    MsgBox "小于或等于0"
    End Select
    End Sub

    Sub select多条件判断2()
    Select Case Sheet1.[b1].Value
    Case "12"
    Sheet1.[a1] = "你输入的值为12"
    Case Else
    Sheet1.[a1] = "你输入的值不是12"
    End Select
    End Sub


    转载请注明作者与出处:http://blog.csdn.net/u013511642  王小涛_同學


    展开全文
  • 判断条件是这样的: 1、当C列中 a. 匹配UCF,则将C列值,写到E列,尾部添加“/带方形座”; b. …………(请见下图表,和a条件一样写到E列) [img=...
  • 方法一: 通过循环,判断目标表是否存在 Function searchTable(TableName As String) As Boolean searchTable = False '默认不存在 Dim tbl As DAO.TableDef For Each tbl In CurrentDb.TableDefs If tbl.Name =...

    方法一: 通过循环,判断目标表是否存在

    Function searchTable(TableName As String) As Boolean
        searchTable = False  '默认不存在
        Dim tbl As DAO.TableDef
        For Each tbl In CurrentDb.TableDefs
            If tbl.Name = TableName Then
                searchTable = True  '如果存在,返回 Ture,并退出循环
                Exit For
            End If
        Next
    End Function
    

    方法二: 通过系统的错误提示,判断表是否存在

    Function test()
        MsgBox TableIsIn("测试表")
    End Function
    
    
    Function TableIsIn(TableName As String)
    
        TableIsIn = True  '默认表存在
        On Error Resume Next   '如果报错,继续往下运行
        
        Dim strSQL As String
        '当表不存在时,系统会报错
        '错误代码为:3078
        '错误信息:Microsoft Access 数据库引擎找不到输入表或查询“表名”。请确定它存在且其名称拼写正确。
        strSQL = "select * from " & TableName
        CurrentDb.Execute strSQL  '执行 sql 
        
        If Err.Number = 3078 Then
            TableIsIn = False
        End If   
             
    End Function
    
    展开全文
  • VBA高手直接删除指定条件行.xls
  • VBA的区间判断

    千次阅读 2019-07-16 13:32:45
    VBA的时候,需要判断变量是不是在一个区间内,写成了下面的语句: If 1 <= countToP <= 6 Then ActiveWorkbook.Sheets(1).Cells(19, countToP + 2).Value = "[*] " & checkboxContent ElseIf countToP ...

    做VBA的时候,需要判断变量是不是在一个区间内,写成了下面的语句:

    If 1 <= countToP <= 6 Then
    	ActiveWorkbook.Sheets(1).Cells(19, countToP + 2).Value = "[*] " & checkboxContent
    ElseIf countToP > 6 Then
    	MsgBox "xxxx", vbExclamation + vbOKOnly, "Warning"
    	Exit For
    End If
    

    结果发现countToP总是可以进到if里面,永远进不了elseif。
    查了下发现原来VBA里面的区间判断不能写成a<x<b的形式,
    必须写成x>a and x<b,不然系统会判断为x>a or x<b,这样就错了。

    展开全文
  • vba判断语句

    千次阅读 2019-05-21 11:13:01
    1)If…Then…Else 语句 如1:If A>B And C<D Then A=B+2 Else A=C+2 如2:If x>250 Then x=x-100 或者 If Number < 10 Then Digits = 1 ElseIf Number < 100Then ...2)Select C...
  • VBA小例子,用来自动填充单元的颜色
  • 语法,创建模板语法判断条件区间判断循环语句函数普通计算借用工作表函数。end语句Exit语句Exit SubExit functionExit forExit doGoto语句,gosub..return'on error resume next ''on error goto ''on error goto 0...
  • 今天遇到一个问题,结果发现是因为vba中if的判断条件中等号("=")无法完成赋值操作造成的。  举个栗子:    故应该在if之前就完成必要的赋值操作: 所以,if判断条件里的等号("=")只能用于判断相等,不能...
  • 一 理解分支条件语句 1.1 VBA里的3种语句 顺序执行的block 分支判断语句(典型的就是指if)--- 按顺序判断,... 所以很多判断逻辑,都得基于这个设计基础考虑 1.3 多层条件分支语句的嵌套(先小后大) 第1层(...
  • 如何用VBA判断文件夹是否存在.doc如何用VBA判断文件夹是否存在.doc
  • 题记:非常期间,希望大家静下心,学习有用的知识,提高自己的水平和能力,这才是正道。适当节制自我的各种欲望,谁都逃不过时间的历练,谁都是命运的行者,谁都是在人生的道路上一步一趋,把生活与工作打理好,...
  • VBA+SQL条件查询记录

    2021-06-29 15:59:18
    SQL-审单血检送检查询.xlsm 源码可见VBA+SQL语句
  • 大于三种颜色的分类处理,时间触发提醒,条件顺序复制处理等等。
  • Excel VBA条件编译语句

    2020-06-15 10:37:19
    作者:iamlaosong ...为了工具的兼容性,可以采用条件编译#If…Then…#Else语句。 Sub ttt() #If VBA7 Then MsgBox "VBA7" #If Win64 Then MsgBox "win64" #Else MsgBox "win32" #End If #Else
  • 图5 高级筛选还可以处理条件,对于同一行中的条件关系为“AND”,对于不同行中的条件关系为“OR”。 提示 1. 在使用VBA代码进行复制操作时,我们不需要先选择想要复制的数据,也不需要选择或激活数据所在的工作...
  • vba 数据类型 if判断

    千次阅读 2018-09-16 19:15:13
    1.数据类型 '------------------------------------------------------------------- '1.VBA中的常见数据类型: ' 类型 注释 简写 占用内存 ' Integer 整型 % ...
  • 某一个文件夹下存了许多文件,想知道某一文件是否存在,然后依据判断结果进行各样的操作。代码可以这么写: Sub test() Dim fileName As String fileName = ThisWorkbook.Path & "\机密文件.xlsx" If Len...
  • Sub 处理专业代号() ... else if 判断条件2 then 返回结果2 else if 判断条件3 then 返回结果3 ... else if 判断条件n-1 then 返回结果n-1 else 返回结果 end if 单元格的写法 range(“a”&i)
  • 做excel发现现有的函数功能不够用,就自学了一下VBA写了第一个新函数:根据条件连接字符串 比如count()有countif()和countifs(),sum()有sumif()和sumifs(),但是concatenate()却没有类似concatenateifs()的函数,...
  • 数据类型判断、转化,对话框(弹框输入、提示,返回文件路径、文件夹),空的一些情况,正则表达式语法,其他常用语句。
  • VBA-判断语句之IF

    万次阅读 2018-11-08 15:28:51
    '判断语句IF单条件与多条件判断 Sub IF条件判断之单条件1() Dim a%, b% '声明变量 a = 2 '给变量赋值 b = 2 '给变量赋值 If a = b Then MsgBox "相等" '如果a等于b,就输入到窗口显示“相等” End Sub ...
  • Excel VBA 笔记 使用IF进行逻辑判断

    千次阅读 2019-04-19 15:56:27
    使用IF进行逻辑判断 Range单元格对象 IF函数过程控制 使用IF退出For循环 小提示: 新建模块:右键Sheet、插入模块 运行:上面的三角形 注释:' 单引号 使用Range 控制单元格 直接写单元格:Range("a1") = ...
  • 该文档是Excel VBA关于List View开发的具体方法,和过程。开发者可以参考该文档,完成listview的开发和使用!
  • 在Excel中,经常使用自动筛选功能筛选数据,将某些条件的数据显示而隐藏其他数据。如图所示,该表为某公司商品出口数据记录。现希望筛选出销往印度尼西亚的所有销售记录,并隐藏其他销售记录,该如何用VBA实现? ...
  • VBA实现word连接数据库实现邮件合并打印,并调用系统打印机窗口。调用的系统打印机根据返回值确定下一步执行动作。通过后台连接数据库,可去掉烦人的数据刷新提示窗口
  • 在工作中,分支判断是最常用的,尤其是IF语句,职场小白也都会使用,总结一下知识点。 ¤IF分支结构¤ VBA的分支结构中,最常用的就是IF…Then…Else结构,这个结构在所有的编程语言中的逻辑都是一致的,哪怕是Excel...
  • 函数作用:在个工作表中查找一个范围内符合某个指定条件的项目对应指定范围加总求和..........................59 '35.函数作用:返回 Column 英文字.......................60 '36.函数作用:查找指定列名的列数.......
  • 基本语法 ...单行写法,同时且执行条语句 If a < 20 Then [b2] = "good": [b3] = "yes" 单行 if else If a < 20 Then [b2] = "aa" Else [b2] = "bb" 其他的细节看这个人总结的吧...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,585
精华内容 1,034
关键字:

vba多条件判断