精华内容
下载资源
问答
  • VBA-语法-逻辑运算
    2019-08-20 10:37:25

     = 在VB的语法里有两种作用, 一是赋值, 二就是逻辑相等运算.
    Dim StrM As String 
    StrM = "save" ' 这里的=是赋值
    If StrM = "save" Then '这里的=是逻辑相等运算

    更多相关内容
  • 移位运算符在程序设计中,...左移运算由两个小于号表示(<它把数字中的所有数位向左移动指定的数量,高位移出(舍弃),低位的空位补零。例如,把数字 2(等于二进制中的 10)左移 5 位,结果为 64(等于二进制中的 10...

    移位运算符在程序设计中,是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<>(带符号右移)和>>>(无符号右移)。

    左移运算由两个小于号表示(<

    它把数字中的所有数位向左移动指定的数量,高位移出(舍弃),低位的空位补零。例如,把数字 2(等于二进制中的 10)左移 5 位,结果为 64(等于二进制中的 1000000)。

    数学意义:

    在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

    有符号右移运算符由两个大于号表示(>>)。

    它把 32 位数字中的所有数位整体右移,同时保留该数的符号(正号或负号)。有符号右移运算符恰好与左移运算相反。例如,把 64 右移 5 位,将变为 2。

    数学意义:

    右移一位相当于除2,右移n位相当于除以2的n次方。

    无符号右移运算符由三个大于号(>>>)表示。

    它将无符号 32 位数的所有数位整体右移。

    如果在vba中仅仅靠数学意义来编写移位运算函数,则经常会陷入“溢出”错误。

    由于JavaScript中刚好具有以上三种移位运算符,所以可以在vba中调用JavaScript来编写移位运算函数。

    代码如下:

    Visual Basic

    '左移函数

    Function BitShiftLeft(ByVal i As Variant)

    Dim sJS As String

    sJS = " var Result = " & i & " << 5"

    Dim oHtml As Object

    '定义HtmlDocument对象

    Set oHtml = CreateObject("htmlfile")

    Dim oWindow As Object

    Set oWindow = oHtml.parentWindow

    With oWindow

    .execScript sJS

    BitShiftLeft = .Result

    End With

    Set oWindow = Nothing

    Set oHtml = Nothing

    End Function

    '右移函数

    Function BitShiftRight(ByVal i As Variant)

    Dim sJS As String

    sJS = " var Result = " & i & " >> 5"

    Dim oHtml As Object

    '定义HtmlDocument对象

    Set oHtml = CreateObject("htmlfile")

    Dim oWindow As Object

    Set oWindow = oHtml.parentWindow

    With oWindow

    .execScript sJS

    BitShiftRight = .Result

    End With

    Set oWindow = Nothing

    Set oHtml = Nothing

    End Function

    Sub QQ1722187970()

    Debug.Print BitShiftLeft(2)

    Debug.Print BitShiftRight(64)

    End Sub

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    '左移函数

    FunctionBitShiftLeft(ByValiAsVariant)

    DimsJSAsString

    sJS=" var Result = "&i&" << 5"

    DimoHtmlAsObject

    '定义HtmlDocument对象

    SetoHtml=CreateObject("htmlfile")

    DimoWindowAsObject

    SetoWindow=oHtml.parentWindow

    WithoWindow

    .execScriptsJS

    BitShiftLeft=.Result

    EndWith

    SetoWindow=Nothing

    SetoHtml=Nothing

    EndFunction

    '右移函数

    FunctionBitShiftRight(ByValiAsVariant)

    DimsJSAsString

    sJS=" var Result = "&i&" >> 5"

    DimoHtmlAsObject

    '定义HtmlDocument对象

    SetoHtml=CreateObject("htmlfile")

    DimoWindowAsObject

    SetoWindow=oHtml.parentWindow

    WithoWindow

    .execScriptsJS

    BitShiftRight=.Result

    EndWith

    SetoWindow=Nothing

    SetoHtml=Nothing

    EndFunction

    SubQQ1722187970()

    Debug.PrintBitShiftLeft(2)

    Debug.PrintBitShiftRight(64)

    EndSub

    其它相关文章推荐:

    展开全文
  • VBA运算符号

    千次阅读 2020-01-25 12:02:01
    VBA常用运算符 常规数学运算符: + - * / ^ 特殊数学运算符: \ 整除 mod 取余数 其他运算符: & () 比较运算符: =赋值 < > <= >= 特殊比较符: is like 逻辑运算符 : ...

     

    VBA常用运算符

    • 常规数学运算符:     +   -   *    /   ^
    • 特殊数学运算符:    \ 整除      mod 取余数 
    • 其他运算符:            &  ()  

     

    • 比较运算符:             =赋值   <  >  <= >=
    • 特殊比较符:           is   like

     

    • 逻辑运算符 :         and     or           xor     not
    • Xor同假异真  Eqv同真异假  Imp 先真后假才为真

     

    • XOR  逻辑排除。它是NOTOR运算符的组合。如果表达式中只有一个表达式的值为True,则结果为True。表示两者不同时为真,相同时为假 
    • EQV,表示两者相同是为真,不同是为假
    • imp逻辑蕴含

     

     

     

     

    Sub 计算测试()
    
    Dim arr1(30)
    
    arr1(0) = 99
    arr1(1) = 1 + 2
    arr1(2) = 2 - 1
    arr1(3) = 3 * 5
    arr1(4) = 10 / 3       '除法
    arr1(5) = 10 \ 3       '整除
    arr1(6) = 10 Mod 3     '去余数
    arr1(7) = (1 + 3) / 2
    
    
    arr1(11) = "a" & "b"
    arr1(12) = "a" + "b"     '字符串可以相加
    arr1(13) = 1 >= 2
    arr1(14) = 1 <= 2
    arr1(15) = (1 = 2)
    arr1(16) = (1 = 1)
    
    
    Dim a As Object
    Dim b As Object
    Dim c As Object
    Set a = b
    
    arr1(17) = a Is b        'is只能用于比较对象是否完全一样
    arr1(18) = Not a Is b
    arr1(19) = a Is c        '因为a,b,c 都是空对象,可以相等
    
    arr1(21) = "test1.xlsm" Like "*.xlsm"    'like 比较需要 ""之内的内容
    arr1(22) = (1 > 2) And (1 < 2)
    arr1(23) = (1 > 2) Or (1 < 2)
    
    
    arr1(30) = (1 > 2) Eqv (1 < 2)
    'arr1(31) = True Eqv True
    'arr1(32) = 1 Eqv 2
    'arr1(33) = 1 Eqv 1
    
    'arr1(34) = (1 > 2) Xor (1 < 2)
    'arr1(35) = (1 > 2) Xor (1 > 2)
    'arr1(36) = 1 Xor 2
    'arr1(37) = 1 Xor 1
    
    
    'arr1(38) = (3 > 2) Imp (5 > 2)    '逻辑包含关系
    'arr1(39) = (1 < 2) Imp (1 < 3)
    'arr1(40) = (1 < 2) Imp (1 < 2)
    
    
    
    For i = LBound(arr1) To UBound(arr1)
        Debug.Print "arr1(" & i & ")= " & arr1(i)
    Next
    
    
    End Sub
    

     

     

    运算结果

    arr1(0)= 99
    arr1(1)= 3
    arr1(2)= 1
    arr1(3)= 15
    arr1(4)= 3.33333333333333
    arr1(5)= 3
    arr1(6)= 1
    arr1(7)= 2
    arr1(8)= 
    arr1(9)= 
    arr1(10)= 
    arr1(11)= ab
    arr1(12)= ab
    arr1(13)= False
    arr1(14)= True
    arr1(15)= False
    arr1(16)= True
    arr1(17)= True
    arr1(18)= False
    arr1(19)= True
    arr1(20)= 
    arr1(21)= True
    arr1(22)= False
    arr1(23)= True
    arr1(24)= 
    arr1(25)= 
    arr1(26)= 
    arr1(27)= 
    arr1(28)= 
    arr1(29)= 
    arr1(30)= False
    

     

     

     

     

    有几个  还有问题


     

     

    他们的真值表如下 (图片转载)
    这里写图片描述

     

    展开全文
  • 常常听网友吐槽VBA这个老态龙钟的古董级别的编程语言太难用,出道多年这个是不争的事实,但是是否好用就...言归正传,今天来看看经常被吐槽的VBA浮点运算问题,VBA不是专门的科学计算语言,所以会产生浮点计算误差。

    常常听网友吐槽VBA这个老态龙钟的古董级别的编程语言太难用,出道多年这个是不争的事实,但是是否好用就另当别论了,钻石在切割之前,也不过是个普通的石头,只有慧眼识珠的人才能发现其价值。
    言归正传,今天来看看经常被吐槽的VBA浮点运算问题,VBA不是专门的科学计算语言,所以会产生浮点计算误差。
    来个实例看一下,这个减法很简单,多数读者无需笔算就可以得出结果,这个等式是成立的。

    Debug.Print 1.8 - 1.755 = 0.045

    但是在VBA的【立即窗口】运行一下,结果如下,是不是令人大跌眼镜。
    在这里插入图片描述
    如果有的读者对于进制转换过程比较熟悉,可能会怀疑是因为小数进行二进制转换导致的这个误差,那么来测试一下,把三个数字都放大一百万倍,结果仍然False。
    在这里插入图片描述
    接下来看看左侧等式的结果究竟是多少,计算结果是4.50000000000002E-02,和正确结果的差值是2x10^-16,这是个足够小的数,但是浮点计算错误,给代码判断逻辑带来了很大的挑战,原本成立的逻辑判断式,莫名其妙的不成立了。
    在这里插入图片描述
    大家莫急,这个也是有解的。既然这个浮点运算误差值足够小,那么在代码中就可以用二者的差值来进行判断,如下所示,将判断的标准定为10^-10,注意浮点误差可能为正,也可能为负,因此需要先使用ABS函数计算误差的绝对值,再进行判断。
    在这里插入图片描述
    令一个解决方法是,将数字进行类型转换,如果数值范围是-922,337,203,685,477.5808 到 922,337,203,685,477.5807,那么转换为Currency类型数据进行运算,将有效的提升计算精度,如下所示。
    在这里插入图片描述

    展开全文
  • VBA中的关系逻辑运算符

    万次阅读 2015-11-19 14:59:25
    条件表达式是使用关系运算符(见表5-1),逻辑运算符(见表5-2)或者两者结合的表达式。当VB在你程序里遇到条件表达式时,它将评估该表达式是对还是错。   表5-1 VBA中的关系运算符 运算符 描述
  • 表达式中的常量、变量、函数等都依靠运算符连接,VBA中的运算符分为4类:算术运算符、比较运算符、逻辑运算符、连接运算符。下面将分别介绍。1.算术运算符VBA中共有7种运算符,如下表所示。示例如下:Sub Sameple...
  • 第031篇:VBA之运算符

    2020-04-27 19:23:52
    (一)定义 运算符是代表VBA某种运算功能的符号。 1.赋值运算符:= 2.数学运算符:&(字符连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数) 备注:Mod,在VBA里的用法...
  • 除常规四则运算以外,还能够进行文本连接、乘幂运算、比较运算等。 文本连接 在VBA中,允许将多个文本通过文本连接符(&)进行连接并组合成新的文本,其基本语法为: Exp1 & Exp2 [ &Exp3] 其中,...
  • VBA-vba与运算符

    千次阅读 2018-11-09 19:26:08
    定义:运算符是代表VBA某种运算功能的符号 赋值运算符:= 数学运算符:&amp;(字符连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数) 逻辑运算符:Not(非)、And(与)、Or(或)、Xor...
  • 2).Font '用来改字体颜色 .Color = -16776961 .TintAndShade = 0 End With End If Next i End Sub 就可以挑出超过500的,然后加粗变红 如果想得到删除啊,换行之类的,都可以录制宏来获取VBA代码,...
  • VBA运算符

    千次阅读 2015-10-19 11:59:32
    什么是运算符? 简单的回答可以利用公式4 ...逻辑(或关系)操作符 连接操作 算术运算符 有以下是VBA支持的算术运算符: 假设变量A=5和变量B=10,则: 查看例子 运算符 描述 例子
  • VBA基础语法:运算符

    2020-01-07 19:32:12
    在进行除法运算之前,数值表达式通过舍去小数部分转换成 Byte 、 Integer 或 Long 表达式。 通常,无论 result 是不是整数, result 的 数据类型 都是 Byte 、 Byte 变体、 Integer 、 Integer 变体、 ...
  • VBA - 变量、数据类型和运算符 1. 变量 1.1. 变量的定义和命名 变量是一个指定的内存位置,用于保存脚本执行过程中可以更改的值。以下是命名变量的基本规则。 变量名称必须使用一个字母作为第一个字符。 变量名称...
  • VBA运算符(九)

    2019-09-28 00:15:36
    运算符可以用一个简单的表达式定义...逻辑(或关系)运算符 连接运算符 算术操作符 以下是VBA支持算术运算符。 假设变量A=5,变量B=10,那么 - 运算符描述示例 + 两个操作数相加 A + B = 15 ...
  • VBA语言的基础认识

    2020-07-01 23:23:57
    VBA是现在可用的最容易学习、最容易使用同时也是最复杂的应用程序自动化语言(过去常常称为宏语言)之一。 VBA语言的基础认识 第一节:标识符 一、定义 标识符是一种标识变量、常量、过程、函数、类等语言构成...
  • 数据形式:两列数据,时间,Y值。 实现功能:从Y值中找到极值,再找到正负相间的第二次极值(第二次的极值中间相隔了...做大小关系时的精度,使用double,否则可能比较失败。 Sub 正负极值点积分() Dim data_lo...
  • 左右边界都包含 score = 100 Select Case score Case 90 To 100 '等价于[90, 100] MsgBox "优秀" Case 60 To 89 MsgBox "及格" Case Is 不及格" End Select '2、逗号的使用:相当于逻辑“或” my_month = "13" ...
  • 运算逻辑尺):and(按位与,位乘),将判断的属性值与属性返回的数值and,计算结果为判断的属性值,则此文件夹具备此属性,否则不具备。 例1得到子文件夹的名字(返回不仅是文件夹的名字还有文件的名字) ...
  • ' 为了尽可能多地容纳各种运算关系,添加了正则表达式匹配运算, ' 在某个单一条件中,正则几乎可以容纳绝大部分的比对运算关系了。 ' 2、数字比较: ' 采用了将数字型字符串类型转换为数字之后再比较的方法,结果...
  • 作者:iamlaosong 数字有两种表达方式。一种是整数,一种是浮点数。浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示随意某个实数。...以免产生逻辑错误。
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧182 取得逻辑盘序列号 12 技巧183 使用API取得硬盘信息 12 技巧184 使用数字签名 12 技巧185 暂停代码的运行 12 技巧186 定时关机 12 技巧187 打开指定的网页 12 技巧188 VBE的操作 12 188-1 添加模块和过程 12 ...
  • 经过多次测试,终于找到一种速度最快的分解bom的方法。将对应关系建好,通过运算自动分解bom,层数没有限制。可以生成物料需求和标准bom阶层格式,是做ERP、MRP必备的方法
  • vba操作规划求解

    千次阅读 2021-09-22 10:28:13
    vba操作规划求解要前期引用用到的函数1,SolverReset2,SolverOk 函数3,SolverAdd 函数4,SolverFinish 函数5,SolverSolve 函数一个简单案例 要前期引用 要使用vba操作规划求解,需要添加引用Solver Program Files...
  • 属于VB的一个子集,广泛应用于Word套件的自动化,其寄存于现有的EXCEL或word等的文件里面日常生活中,需要做到有逻辑性质的筛选EXCEL数据再进行输出的话往往比较麻烦,由此利用到EXCEL里面的宏,就是VBA编程就可以...
  • VBA 提取数字或者汉字

    千次阅读 2019-11-19 13:13:00
    Private Sub CommandButton1_Click() s = Range("J2") Set regex = CreateObject("vbscript.regexp") With regex .Global = True .Pattern = "\d+" ' .Pattern = "[\u4e00-\u9fa5]+" For Eac...
  • VBA里的编译错误,就是写在VBE里,还没运行就报错的那类错误 1.2 运行错误(和数据关系较大): 运行时才会出错的错误 比如一个语句运行时发现此操作会无法进行,卡住,或者返回值报错等等 这...
  • VBA的语法很简单易懂,逻辑性强,但很全面,因此涉及的方面也较多,本文及随后的一系列文章将重点介绍VBA语法方面的相关知识。这些文章都是自已在学习VBA过程中的总结归纳笔记。本文只是简要概略的讲解了VBA所涉及的...
  • VBA的运算符和表达式

    千次阅读 2017-01-02 12:16:43
    VBA的运算符和表达式——百度文库 本文从广义的角度将VBA的运算符进行了全面的归纳和总结,包括通常意义上的算术运算符、连接运算符、比较运算符和逻辑...因为VBA的一些运算符涉及到较强的逻辑关系,您在阅读本文时

空空如也

空空如也

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

vba逻辑运算