MSCBSC 移动通信论坛
搜索
登录注册
网络优化工程师招聘专栏 4G/LTE通信工程师最新职位列表 通信实习生/应届生招聘职位

  • 阅读:25623
  • 回复:141
每日学习一点VBA知识
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-09 17:43:53  只看楼主  QQ


QUOTE:
原帖由 zhyong8520 于 2013-12-9 14:34:38 发表

禁止纯表情发帖,以示警告

对本帖内容的看法? 我要点评

 
[充值威望,立即自动到帐] [VIP贵宾权限+威望套餐] 另有大量优惠赠送活动,请光临充值中心
充值拥有大量的威望和最高的下载权限,下载站内资料无忧
timewind
中级会员
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

积分 915
帖子 152
威望 5750 个
礼品券 5 个
专家指数 155
注册 2013-6-19
专业方向  BSC
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-09 21:20:17 
我很想学VBA,小白一个,LZ发的几乎都是解释和说明,没有例子有些看得一头雾水...

对本帖内容的看法? 我要点评

 
[立即成为VIP会员,百万通信专业资料立即下载,支付宝、微信付款,简单、快速!]
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-09 21:56:29  只看楼主  QQ
以后加例子进去,不过我的例子也是转载别人的哈。我也是初学的

对本帖内容的看法? 我要点评





要自信,还要低调!!
 
最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-09 22:03:16  只看楼主  QQ
转载一个例子:利用VBA设置工作表使用权限

一般保护工作表采取的方法是用excel菜单中的“保护”命令,有时这尚嫌不足,比如一些机密文件根本要让某些使用者无法看到,但又需要他来操作工作簿中的其他表,怎么办?

可以打开VBA编辑器,打开“工程资源管理器”,双击该工作表,现在出现的是设置该表的属性的编辑窗口,单击窗口左上的下拉列表框,选择worksheet ,这时再从该窗口右上方的列表框中选择Active(“激活”),这时自动显示如下的语句块:
Private Sub Worksheet_Activate()

End Sub
在其中加入代码:(假设用"123"作为密码,Sheet"机密文档"为限制权限文档,sheet"普通文档"为工作簿中你认为任何适合的工作表)

If Application.InputBox("请输入操作权限密码:") = 123 Then
Range("A1").Select
Else
Msgbox "密码错误,即将退出!"
Sheets("普通文档").Select
End if

程序如下:
Private Sub Worksheet_Activate()
If Application.InputBox("请输入操作权限密码:") = 123 Then
Range("A1").Select
Else
MsgBox "密码错误,即将退出!"
Sheets("普通文档").Select
End If
End Sub

这样做仍有一个问题,就是越权使用者仍会看到一些文件的片段,即在提示密码的那段时间。好,你可以这样做,用上述方法选择工作表的Deactivate事件,输入以下代码:
Sheets("机密文档").Cells.Font.ColorIndex = 2
这段程序使得此工作表在不被激活时,所有文字为白色。然后,在第一个程序中的Range("A1").Select后插入一行,写入以下代码:
ActiveSheet.Cells.Font.ColorIndex = 56

这段程序,在你输入正确密码后,将该表所有文字转变为深灰色。
完整的程序如下:

Private Sub Worksheet_Activate()
If Application.InputBox("请输入操作权限密码:") = 123 Then
Range("A1").Select
Sheets("机密文档").Cells.Font.ColorIndex = 56
Else
MsgBox "密码错误,即将退出!"
Sheets("普通文档").Select
End If

这个例子还有好多可以优化的地方,还请高手可以帮忙优化。谢谢!

对本帖内容的看法? 我要点评





要自信,还要低调!!
 
热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
恋爱未遂
金牌会员



 发短消息    关注Ta 

积分 6045
帖子 395
威望 13889 个
礼品券 0 个
专家指数 -170
注册 2009-2-19
专业方向  无线
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-09 23:05:52 
经常用到,跟进此贴。共同提高。

对本帖内容的看法? 我要点评





    人心是不待风吹而自落的花。以前的恋人,还记得她情深意切的话,但人已离我而去,形同路人。此种生离之痛,有甚于死别也。故见到染丝,有人会伤心;面对岔路,有人会悲泣。
 
最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网
崔dark
入门会员
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

公益·慈善勋章  
积分 29
帖子 50
威望 -3712 个
礼品券 5 个
专家指数 -221
注册 2012-2-4
专业方向  GSM网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-10 17:36:13  QQ
支持楼主

对本帖内容的看法? 我要点评

 
[2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
spring1989
中级会员
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

积分 873
帖子 161
威望 17446 个
礼品券 2 个
专家指数 68
注册 2013-11-20
专业方向  无线通信
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-10 18:58:34 
大谢lz,我是新手,以前也领略过excel VBA的神奇,以前不懂是怎么弄的,现在终于知道这东西了,以后跟着lz学习。

对本帖内容的看法? 我要点评

 
热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-10 22:21:23  只看楼主  QQ
程序流程控制—>if语句

1、if—then语句
  这个句式相当于中文里面的“如果.......那么”。
  格式:
    if逻辑表达式 then
语句块
end if
 解释:如果逻辑表达式的结果为true,则执行语句块里的所有语句,否则执行end if后面的语句。语句块可以是一句指令或多条指令,也可以调用一个或多个过程,当然,也可以为空,就是没有语句。
  如:要判断A1单元格是否已输入内容,设计程序:
复制内容到剪贴板
代码:
Sub test1()
If [a1] = "" Then
MsgBox "A1单元格没有输入任何内容!"
End If
End Sub
 2、 if—then—else语句  
  这个语句相当于中文里面的“如果......那么......否则......”句式。
  格式:
    if逻辑表达式 then
语句块1
    else
语句块2
end if
解释:如果逻辑表达式的结果为true,则执行语句块1里的所有语句,如果逻辑表达式的结果为Flase则执行语句块2里的所有语句。
  如:要判断A1单元格是否已输入内容,设计程序:
复制内容到剪贴板
代码:
Sub test2()
If [a1] = "" Then
MsgBox "A1单元格没有输入任何内容!"
Else
MsgBox "A1单元格已经输入了内容!"
End If
End Sub
  3、if—then—elseif语句
  这就相当于中文里面的若“如果…那么…否则如果…那么…否则”语句,当然,可以有多句“否则如果.......”
  格式:
    If逻辑表达式1 Then
语句块1
ElseIf逻辑表达式2Then
语句块2
ElseIf逻辑表达式3Then
语句块3

Else
语句块n
Eed If
  解释:若逻辑表达式1的结果为True,则执行语句块1,接着继续执行EndIf后面的语句;若逻辑表达式1的结果为False,则检查逻辑表达式2的结果,若为True则执行语句块2,接着继续执行EndIf后面的语句.......一直到所有结果的条件都不满足时,才执行Else后面的语句块n。
  如:要判断A1单元格的数是否能被2、3、5其中之一整除,设计程序:
复制内容到剪贴板
代码:
Sub test3()
If [a1] = "" Then
MsgBox "A1单元格没有输入任何内容!"
ElseIf [a1] Mod 2 = 0 Then
MsgBox "A1单元格的数能被2整除!"
ElseIf [a1] Mod 3 = 0 Then
MsgBox "A1单元格的数能被3整除!"
ElseIf [a1] Mod 5 = 0 Then
MsgBox "A1单元格的数能被5整除!"
Else
MsgBox "A1单元格的数不能被2、3、5其中之一整除!"
End If
End Sub

对本帖内容的看法? 我要点评





要自信,还要低调!!
 
[2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
Arvie5
VIP会员
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

公益·慈善勋章   纪念勋章·九周年  
积分 3412
帖子 852
威望 555288 个
礼品券 95 个
专家指数 -848
注册 2012-2-12
专业方向  GSM/TD/LTE
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-11 08:22:32  QQ
每天来跟进学习一下,挺好的!

对本帖内容的看法? 我要点评

 
[2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-11 23:19:05  只看楼主  QQ
程序流程控制——Select Case语句

  Select Case语句同IF语句一样,也是条件判断的语句。它的功能也可以用IF语句来完成。但是,当程序的条件太多,用IF语句来判断的话就存在一些不足了,比如程序是否美观?是否便于阅读?程序的执行效率等等。Select Case语句在执行的效率上,同IF语句相比,肯定是要快得多。
[Select Case语句的语法]
  Select Case 测试表达式
   Case 条件表达式1
   语句块1
   Case 条件表达式2
  语句块2
  Case 条件表达式3
  语句块3
   ......
  Case 条件表达式n
  语句块n
   Case Else
  语句块Else
End Select.
当某个条件表达式与测试表达式相匹配时,则执行其后的语句块,否则执行Case Else后的语句块,然后结束Select Case块的执行。同IF语句一样,可以不要Case Else语句。
“如对A1单元格的学生成绩进行等级评定,小于等于30分的为差,30分到59分的为不及格,60分到79分的为及格,80分到89分的为良好,90到100分的为优秀。”用Select Case语句来解决就是:
复制内容到剪贴板
代码:
Sub Test()
If [a1].Value = "" Then
MsgBox "A1单元格没有输入数字。"
Exit Sub '退出程序
End If
Select Case [a1].Value
Case Is < 30
MsgBox "差"
Case Is < 60
MsgBox "不及格"
Case Is < 80
MsgBox "及格"
Case Is < 90
MsgBox "良好"
Case Else
MsgBox "优秀"
End Select
End Sub

对本帖内容的看法? 我要点评





要自信,还要低调!!
 
[2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-12 22:54:59  只看楼主  QQ
程序流程控制——For—Next 循环语句

什么是循环?
这里我们指的循环是指重复地执行某项动作(语句块)。
同学们在操场上跑步,两万米长跑,每圈400米。“呯”,枪一响,开始跑,一圈,两圈,三圈......直到跑满50圈才停止。这里,同学们就是在循环地在操场的跑道上执行跑步的动作。

我们来看一下For—next 的句式:

For 循环变量=初值 to 终值 step 步长
循环体1
[exit for]
循环体2
next 循环变量

解释:从开始到结束,反复执行For和Next之间的指令块,除非遇到Exit For语句,将提前跳出循环。其中,步长和Exit For语句以及Next后的循环变量均可省略,步长省略的时候默认为1。Exit for 语句是强制终止循环的语句,执行它后将退出循环,执行next后面的语句。
循环变量是一个变量,可以在循环体中对其进行修改,但一般就避免在循环体中对其修改。
对句式进行了初步的认识后,我们用这个句式来叙述上面学生跑步的问题。把它编成程序,20000米,要跑50圈,也就是要50次,同学们要在上面一圈,两圈。。。。直到满50圈才停止循环跑步,当然,如果你要提前退赛,就不用跑满50圈了。有了这个思想,程序可以写成:
Sub 循环跑步()
dim 圈数 as byte
for 圈数=1 to50 step 1
If 学生.要求=退赛
exit for
End If
Next 圈数
End Sub
当然,这只是一个实例,帮助你对For—next语句的理解

对本帖内容的看法? 我要点评





要自信,还要低调!!
 
[2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
夜暮挽歌
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

C友·贡献勋章   纪念勋章·八周年  
积分 7130
帖子 1288
威望 34954 个
礼品券 920 个
专家指数 338
注册 2008-6-19
专业方向  Consultant
来自 陕西西安
回答问题数 0
回答被采纳数 0
回答采纳率 0%

用支付宝求购
 
发表于 2013-12-15 11:19:21  QQ
版主辛苦了,板凳等待

对本帖内容的看法? 我要点评





这个宇宙整体的真理就是无常,没有所谓的完全的正义与完全的邪恶
 
热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-16 20:19:18  只看楼主  QQ
For—Each 循环语句:

For Eacn 元素变量 In 对象集合或数组名称
语句块1
[Exit For]
语句块2
next 元素变量

和上面For—next句式是一样的工作原理。
这里的“元素变量”是用来遍历集合或数中中元素的变量,它从集合或数组的第一个元素开始,直到最后一个元素,然后退出循环。
这里我们举个例子,把当前工作薄中工作表的名称写在A列,程序为:
复制内容到剪贴板
代码:
Sub shtname()
Dim i As Integer, sht As Worksheet
i = 1
For Each sht In Worksheets
Cells(i, 1) = sht.Name
i = i + 1 '让写入名称的单元格下移一行
Next
End Sub

对本帖内容的看法? 我要点评





要自信,还要低调!!
 
热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-19 13:06:57  只看楼主  QQ
Do While语句:
Do While也是循环语句,它分为两种情况,一种是把循环条件放在开头,一种是把循环条件放在结尾。
1、开头判断循环条件
语句格式:
Do Wihle 循环条件
语句块1
[Exit Do]
语句块2
Loop
首先判断循环条件,条件为真则执行Do到Loop之间的语句。
2、结尾判断循环条件
语句格式:
Do
语句块1
[Exit Do]
语句块2
Loop Wihle 循环条件

先执行一次Do到Loop之间的语句,再判断循环条件,满足条件则进行循环。
两种格式的区别:因为第二种格式是把循环体放在尾部,得先执行一遍语句再进行循环条件判断,所以,同样的条件,第二种格式的循环会比第一种多执行一次循环部份的语句。
我们用Do While语句来解决求1——1000的自然数的和的问题:
复制内容到剪贴板
代码:
Sub mysum()
Dim Lsum As Long, i As Long
i = 1
Do While i <= 1000
Lsum = Lsum + i
i = i + 1
Loop
MsgBox "1到1000的自然数和为:" & Lsum
End Sub

对本帖内容的看法? 我要点评





要自信,还要低调!!
 
热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2013-12-22 10:45:19  只看楼主  QQ
Do Until 语句:

这个和Do While语句类似,它也有两种形式,学了Do While
语句,再看这个,就可以无师自通了。下面就简单介绍下:
1、开头判断循环条件
  语句格式:
Do Until 循环条件
语句块1
[Exit Do]
语句块2
Loop

2、结尾判断循环条件
语句格式:
Do
语句块1
[Exit Do]
语句块2
Loop Until 循环条件
执行Do 和Loop之间的指令,直到循环条件为真时退出循环。
直到循环条件为真时退出循环,这是Do Until 与  Do While的区别。而它两种语句格式的区别,也是第二种比第一种多执行一次循环部分的语句。
还是求1——1000自然数的问题,这次我们换用Do Untile语句:
代码:
Sub mysum()
Dim Lsum As Long, i As Long
i = 1
Do
Lsum = Lsum + i
i = i + 1
Loop Until i > 1000
MsgBox "1到1000的自然数和为:" & Lsum
End Sub

对本帖内容的看法? 我要点评





要自信,还要低调!!
 
[2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]

快速回复主题    
标题
内容
 上传资料请点左侧【添加附件】

当前时区 GMT+8, 现在时间是 2026-04-18 04:59:10
渝ICP备11001752号  Copyright @ 2006-2016 mscbsc.com  本站统一服务邮箱:mscbsc@163.com

Processed in 0.954300 second(s), 48 queries , Gzip enabled
TOP
清除 Cookies - 联系我们 - 移动通信网 - 移动通信论坛 - 通信招聘网 - Archiver