Excel精英培训网

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

[已解决]Public m As Integer中M值指什么?

[复制链接]
发表于 2012-3-15 16:16 | 显示全部楼层 |阅读模式
Public m As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str
If Target.Column = 1 Then
   If m <> 1 Then
     str = InputBox("请输入第1列密码", "身份验证")
     If str = 123 Then
       m = 1
     Else
       [b1].Select
     End If
   End If
End If
End Sub
中总是不明白这个公共变量M指的是什么呢?If m <> 1 Then 中我试了把M<>1换成M<1也是可以运行的,但是换成M>1后就不能运行了,这是为什么呢?
最佳答案
2012-3-15 17:12
从代码上来看,应该是一个禁止选择 第一列 的代码
当选择第一列时 ,M的值不是 1 就要求输入 密码

输入的密码=123 ,则视为获得第一列的选择权,所以重新赋值M=1

M被重新赋值后,你在选择 第一列,就不会再输入密码了!!


  1. Public m As Integer
  2. '声明一个公有变量,只要不关闭表,不使用 end ,不调试代码,该变量获得的值就会一直存在

  3. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  4. Dim str
  5. If Target.Column = 1 Then    '如果选择的是第一列
  6.     If m <> 1 Then    '如果 M的值不是1
  7.       str = InputBox("请输入第1列密码", "身份验证")   '输入密码
  8.       If str = 123 Then  '密码是123
  9.         m = 1  '重置M的 值
  10.       Else
  11.         [b1].Select  '否则选择 B1 单元格
  12.       End If
  13.     End If
  14. End If
  15. End Sub
复制代码

发表于 2012-3-15 16:22 | 显示全部楼层
本帖最后由 zjcat35 于 2012-3-15 16:23 编辑

M是公共变量,之前定义他的类型是 integer ,所以他的初始值是0! 你换成>1 条件不成立,当然不运行了!
如果定义string,那么他的初始值就为 ""
回复

使用道具 举报

发表于 2012-3-15 16:23 | 显示全部楼层
m在被赋值之前m=0
所以把M<>1换成M<1的结果为TRUE
回复

使用道具 举报

发表于 2012-3-15 16:30 | 显示全部楼层
坐看高手来解答
回复

使用道具 举报

 楼主| 发表于 2012-3-15 16:31 | 显示全部楼层
本帖最后由 youke333 于 2012-3-15 16:32 编辑
lisachen 发表于 2012-3-15 16:23
m在被赋值之前m=0
所以把M<>1换成M<1的结果为TRUE


请问一下
当 If str = 123 时  m = 1
那在什么情况下m<>1呢,这块总不太理解.
还有为什么m=1时,可以选择A列的单元格,这个M和A列的单元格怎么联系起来的呢

回复

使用道具 举报

发表于 2012-3-15 16:33 | 显示全部楼层
本帖最后由 琴箫剑气 于 2012-3-15 16:37 编辑
zjcat35 发表于 2012-3-15 16:22
M是公共变量,之前定义他的类型是 integer ,所以他的初始值是0! 你换成>1 条件不成立,当然不运行了!
如 ...


这里的M变量,指的是什么啊
回复

使用道具 举报

 楼主| 发表于 2012-3-15 16:35 | 显示全部楼层
琴箫剑气 发表于 2012-3-15 16:33
这样里的M变量,指的是什么啊

对对对,我也就是这块不太明白,呵呵,我怎么就没表达出来呢,谢谢兄弟了。
回复

使用道具 举报

发表于 2012-3-15 17:12 | 显示全部楼层    本楼为最佳答案   
从代码上来看,应该是一个禁止选择 第一列 的代码
当选择第一列时 ,M的值不是 1 就要求输入 密码

输入的密码=123 ,则视为获得第一列的选择权,所以重新赋值M=1

M被重新赋值后,你在选择 第一列,就不会再输入密码了!!


  1. Public m As Integer
  2. '声明一个公有变量,只要不关闭表,不使用 end ,不调试代码,该变量获得的值就会一直存在

  3. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  4. Dim str
  5. If Target.Column = 1 Then    '如果选择的是第一列
  6.     If m <> 1 Then    '如果 M的值不是1
  7.       str = InputBox("请输入第1列密码", "身份验证")   '输入密码
  8.       If str = 123 Then  '密码是123
  9.         m = 1  '重置M的 值
  10.       Else
  11.         [b1].Select  '否则选择 B1 单元格
  12.       End If
  13.     End If
  14. End If
  15. End Sub
复制代码

回复

使用道具 举报

发表于 2012-3-15 17:12 | 显示全部楼层
m 就是变量,变量的意思就是随你自己对它进行赋值!
  1. If m <> 1 Then
  2.      str = InputBox("请输入第1列密码", "身份验证")
  3.      If str = 123 Then
  4.        m = 1
  5.      Else
  6.        [b1].Select
  7.      End If
  8.    End If
复制代码
代码中的这一段,判读str = 123 时,执行下面代码,相当于他设定了一个密码,密码是123,当你输对的时候,就对m进行了赋值,让他 等于 1 ,m= 1以后这段代码已经算是运行结束了,直接end if了
    当你第二次再选择A列的时候,又开始判断m <>1是否成立,因为你之前的代码运行完m = 1了,所以这里不成立,就不需要再输入密码!(这里又涉及到一个变量的存活周期问题)
你想弄清楚,最好系统的学习一下,视频多看一看!

表达的可能不是那么清晰,组织能力 有限哈
回复

使用道具 举报

 楼主| 发表于 2012-3-15 21:01 | 显示全部楼层
本帖最后由 youke333 于 2012-3-15 21:06 编辑
无聊的疯子 发表于 2012-3-15 17:12
从代码上来看,应该是一个禁止选择 第一列 的代码
当选择第一列时 ,M的值不是 1 就要求输入 密码


谢谢,解答的实在是太好了,让我茅塞顿开,太感谢了!    谢谢在座各位了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 11:25 , Processed in 0.444613 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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