Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 10859|回复: 5

[已解决]Boolean数据类型

[复制链接]
发表于 2013-4-2 22:49 | 显示全部楼层 |阅读模式
刚开始看VBA的书。
发现Boolean 为什么只有true与false两个值,但是为什么是2个字节。不是应该只有1位就可以解决的么?
而且VBA的最小的还有byte:1个字节的长度。

求解
最佳答案
2013-4-2 23:33
  1. Sub 逻辑型数据存储位数()
  2. '    逻辑型数据在内存中占2个字节?
  3. '    逻辑型数据只有两个可能的值: True(真) False(假)
  4. '    若将逻辑型数据转换成数值型,则: True(真)为 –1 False(假)为 0
  5. '    -1在保存时,必须占用2个字节,1个字节存储负号,一个字节存储数值
  6. '    而Byte型只能保存非负数?
  7. '    本例中Y为逻辑型,S为数值型,当Y赋值给S时,S的值为-1
  8. '
  9.     Dim Y As Boolean, S As Integer
  10.     Y = True
  11.     S = Y
  12.     MsgBox Y
  13.     MsgBox S
  14. End Sub
复制代码
发表于 2013-4-2 23:13 | 显示全部楼层
本帖最后由 1032446692 于 2013-4-2 23:14 编辑

有些事情  我觉得  就像1+1=2一样  是基础的
回复

使用道具 举报

发表于 2013-4-2 23:33 | 显示全部楼层    本楼为最佳答案   
  1. Sub 逻辑型数据存储位数()
  2. '    逻辑型数据在内存中占2个字节?
  3. '    逻辑型数据只有两个可能的值: True(真) False(假)
  4. '    若将逻辑型数据转换成数值型,则: True(真)为 –1 False(假)为 0
  5. '    -1在保存时,必须占用2个字节,1个字节存储负号,一个字节存储数值
  6. '    而Byte型只能保存非负数?
  7. '    本例中Y为逻辑型,S为数值型,当Y赋值给S时,S的值为-1
  8. '
  9.     Dim Y As Boolean, S As Integer
  10.     Y = True
  11.     S = Y
  12.     MsgBox Y
  13.     MsgBox S
  14. End Sub
复制代码
回复

使用道具 举报

发表于 2013-4-3 09:01 | 显示全部楼层
看见VBA几个字母,我{:22:}
回复

使用道具 举报

 楼主| 发表于 2013-4-3 13:36 | 显示全部楼层
那么的帅 发表于 2013-4-2 23:33

True为-1有什么好处么?为什么不是1?
回复

使用道具 举报

发表于 2013-4-3 14:24 | 显示全部楼层
烨熙 发表于 2013-4-3 13:36
True为-1有什么好处么?为什么不是1?

帮助里有说明

当转换其他的数值类型Boolean 值时,0 会转成 False,而其他的值则变成 True
当转换 Boolean 值为其他的数据类型时,False 成为 0,而 True 成为 -1。

  1. Sub cc()
  2. Dim Tf As Boolean
  3.   Tf = True
  4.   MsgBox VBA.CDbl(Tf)
  5.   MsgBox VBA.CLng(Tf)
  6. End Sub
复制代码
至于为什么要是 0 和 -1 那你只有去问 office 的开发者了,为啥要这么设置??

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 06:13 , Processed in 0.783313 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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