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

  • 阅读:5816
  • 回复:5
转帖:KLYan的VBA知识整理
ipseno
版主
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

纪念勋章·八周年   纪念勋章·十周年  
积分 6989
帖子 873
威望 14020 个
礼品券 610 个
专家指数 -75
注册 2008-3-24
专业方向  网络优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2014-01-04 10:09:43  只看楼主  QQ
1.几种用VBA在单元格输入数据的方法
这是试写的VBA的课程 VBALesson1,希望各位给予意见,以便以后改进。
程序说明:
几种用VBA在单元格输入数据的方法:
Public Sub Writes()
1-- 2 方法,最简单在 "[ ]" 中输入单元格名称。
1 [A1] = 100 '在 A1 单元格输入100。
2 [A2:A4] = 10 '在 A2:A4 单元格输入10。
3-- 4 方法,采用 Range(" "), " " 中输入单元格名称。
3 Range("B1") = 200 '在 B1 单元格输入200。
4 Range("C1:C3") = 300 '在 C1:C3 单元格输入300。
5-- 6 方法,采用 Cells(Row,Column),Row是单元格行数,Column是单元格栏数。
5 Cells(1, 4) = 400 '在 D1 单元格输入400。
6 Range(Cells(1, 5), Cells(5, 5)) = 50 '在 E1:E 5单元格输入50。
End Sub
你点选任何单元格,按 Selection 按钮,則则所点选的单元格均会被输入文字 "Test"。
Public Sub Selection1()
Selection.Value = "Test" '在任何你点选的单元格输入文字 "Test"。
End Sub
"观看本程序的方法:
粗体文字为程序,其它字体均为说明文字。
按快捷键 Alt+F11即可看到程序。"
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“YD5GAI”免费领取《中国移动:5G网络AI应用典型场景技术解决方案白皮书
  • 2、回复“5G6G”免费领取《5G_6G毫米波测试技术白皮书-2022_03-21
  • 3、回复“YD6G”免费领取《中国移动:6G至简无线接入网白皮书
  • 4、回复“LTBPS”免费领取《《中国联通5G终端白皮书》
  • 5、回复“ZGDX”免费领取《中国电信5G NTN技术白皮书
  • 6、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 7、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 8、回复“5GX3”免费领取《 R16 23501-g60 5G的系统架构1
  • 对本帖内容的看法? 我要点评





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


     发短消息    关注Ta 

    纪念勋章·八周年   纪念勋章·十周年  
    积分 6989
    帖子 873
    威望 14020 个
    礼品券 610 个
    专家指数 -75
    注册 2008-3-24
    专业方向  网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2014-01-04 10:14:16  只看楼主  QQ
    技术问题,回答得专家指数,快速升级
    2.读取别表数据
      几种如何把别的工作表 Sheet4 数据,读到这个工作表的方法:在被读取的单元格前加上工作表名称 Sheet4。
    Public Sub Writes()
    1-- 2 方法,最简单在被读取的 "[ ]" 前加上被读取的工作表名称 Sheet4。
    1 [A1] = Sheet4.[A1] '把Sheet4 A1 单元格的数据,读到 A1单元格。
    2 [A2:A4] = Sheet4.[B1] ''把 Shee4 工作表单元格 B1 数据,读到 A2:A4 单元格。
    3-- 4 方法,在被读取的工作表 Range(" ")的 Range 前加上被读取的工作表名称Sheet4。
    3 Range("B1") = Sheet4.Range("B1") ''把 Shee4工作表单元格 B1 数据,读到 B1 单元格。
    4 Range("C1:C3") = Sheet4.Range("C1") '把 Shee4 工作表单元格 C1 数据,读到 C1:C3 单元格。
    5-- 6 方法,在被读取的工作表 Cells(Row,Column),Cells 前加上被读取工作表名称 Sheet4。
    5 Cells(1, 4) = Sheet4.Cells(1, 4) '把 Shee4 工作表单元格 D1 数据,读到 D1 单元格。
    6 Range(Cells(1, 5), Cells(5, 5)) = Sheet4.Cells(1, 5) '把 Shee4 工作表单元格 E1 数据,读到 E1:E 5单元格。
    End Sub
    你点选任何单元格,按 Selection 按钮,则所点选的单元格均会被输入 Shee4 工作表单元格 F1 数据。
    Public Sub Selection1()
    Selection.Value = Sheet4.[F1] '把 Shee4 工作表单元格 F1 数据,读到任何你点选的单元格。
    End Sub

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





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


     发短消息    关注Ta 

    纪念勋章·八周年   纪念勋章·十周年  
    积分 6989
    帖子 873
    威望 14020 个
    礼品券 610 个
    专家指数 -75
    注册 2008-3-24
    专业方向  网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2014-01-04 10:15:03  只看楼主  QQ
    3.利用 Worksheet_SelectionChange 输入数据的方法
      几种如何把别的工作表 Sheet4 数据,读到这个工作表的方法:在被读取的单元格前加上工作表名称 Sheet4。
    Public Sub Writes()
    1-- 2 方法,最简单在被读取的 "[ ]" 前加上被读取的工作表名称 Sheet4。
    1 [A1] = Sheet4.[A1] '把Sheet4 A1 单元格的数据,读到 A1单元格。
    2 [A2:A4] = Sheet4.[B1] ''把 Shee4 工作表单元格 B1 数据,读到 A2:A4 单元格。
    3-- 4 方法,在被读取的工作表 Range(" ")的 Range 前加上被读取的工作表名称Sheet4。
    3 Range("B1") = Sheet4.Range("B1") ''把 Shee4工作表单元格 B1 数据,读到 B1 单元格。
    4 Range("C1:C3") = Sheet4.Range("C1") '把 Shee4 工作表单元格 C1 数据,读到 C1:C3 单元格。
    5-- 6 方法,在被读取的工作表 Cells(Row,Column),Cells 前加上被读取工作表名称 Sheet4。
    5 Cells(1, 4) = Sheet4.Cells(1, 4) '把 Shee4 工作表单元格 D1 数据,读到 D1 单元格。
    6 Range(Cells(1, 5), Cells(5, 5)) = Sheet4.Cells(1, 5) '把 Shee4 工作表单元格 E1 数据,读到 E1:E 5单元格。
    End Sub
    你点选任何单元格,按 Selection 按钮,则所点选的单元格均会被输入 Shee4 工作表单元格 F1 数据。
    Public Sub Selection1()
    Selection.Value = Sheet4.[F1] '把 Shee4 工作表单元格 F1 数据,读到任何你点选的单元格。
    End Sub

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





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


     发短消息    关注Ta 

    纪念勋章·八周年   纪念勋章·十周年  
    积分 6989
    帖子 873
    威望 14020 个
    礼品券 610 个
    专家指数 -75
    注册 2008-3-24
    专业方向  网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2014-01-04 10:15:39  只看楼主  QQ
    4.利用 Worksheet_SelectionChange 在限定的单元格输入数据
    如何利用 Worksheet_SelectionChange 在限定的单元格输入数据的方法。
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row >= 2 And Target.Column = 2 Then
    Target = 100
    End If
    End Sub
    If ... Then ... End If 这是我们学的这一个逻辑判断语句。
    Target.Row >= 2,指的是鼠标选定的单元格的行大于或等于 2。
    Target.Column = 2 ,指的是鼠标选定的单元格的栏等于 2。
    If Target.Row >= 2 And Target.Column = 2 Then 指的是只有在Target.Row >= 2及Target.Column = 2二个条件成立时。
    就是 (Target.Row >= 2) 为True及(Target.Column = 2)为True时,才执行下面的程序 Target=100,
    也就是 B 栏第二行及以下行用鼠标被点选时,才会被输入100,其它单元格则不被输入数据。

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





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


     发短消息    关注Ta 

    积分 5953
    帖子 392
    威望 40644 个
    礼品券 18 个
    专家指数 99
    注册 2008-11-20
    专业方向  网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2014-01-05 08:43:40 
    得好好学习i下

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

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


     发短消息    关注Ta 

    纪念勋章·八周年   纪念勋章·十周年  
    积分 6989
    帖子 873
    威望 14020 个
    礼品券 610 个
    专家指数 -75
    注册 2008-3-24
    专业方向  网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2014-01-05 22:16:08  只看楼主  QQ
    5.比较Worksheet_SelectionChange()与CommandButton1_Click()
    比较 Worksheet_SelectionChange() 与用按钮 CommandButton1_Click() 来执行程序二者的方法与写法有何不同。
    Worksheet_SelectionChange()事件
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row >= 2 And Target.Column = 2 Then
    Target = 100
    End If
    End Sub
    按鈕 CommandButton1_Click()
    Private Sub CommandButton1_Click()
    If ActiveCell.Row >= 2 And ActiveCell.Column >= 3 Then
    ActiveCell = 100
    End If
    End Sub
    二者执行方法最大的地方,在于 Worksheet_SelectionChange() 是自动的,你不用了解他是怎么完成工作的。
    按钮 CommandButton1_Click() 是人工的,比 SelectionChange()多一道手续,就是要去按那接钮,程序才会执行。
    SelectionChange() 有一个参数 Target 可用;CommandButton1_Click ()没有。
    所以我们要用 ActiveCell 内定函数来取代Target,ActiveCell 与 Target最大的不同点他只能指定一个单元格。
    就是你选取多个单元格也只有最上面的单元格会加上数据;用 Selection 取代 ActiveCell, 用法就跟 Target 一样了。


    6.完整的 If.Then End 逻辑判断式
    完整的 If...Then ┅ End 逻辑判断式。
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row >= 2 And Target.Column = 2 Then
    Target = 200
    ElseIf Target.Row >= 2 And Target.Column = 3 Then
    Target = 300
    ElseIf Target.Row >= 2 And Target.Column = 2 Then
    Target = 400
    Else
    Target = 500
    End If
    End Sub
    这是个完整的 If 逻辑判断式,意思是说,假如 If 後的判断式条件成立的话,就执行第二条程序,否则假如 ElseIf 後的判断式条件成立的话,就执行第四条程序,否则假如另一个 ElseIf 後的判断式条件成立的话,就执行第六条程序。
    Else 的意思是说,假如以上条件都不成立的话,就执行第八条程序。
    他的执行方式是假如 IF 的条件成立的话,就不执行其它ElseIf 及Else 的逻辑判断式,假如 If 後的条件不成立的话才会执行 ElseIf 或 Else 逻辑判断式。第二个 ElseIf後的条件因为与 IF 後的条件一样,所以这个判断式後面的 Target=400 将是永远无法执行到的程序。


    7.为什麽要用变数
    我们为什麽要用变数。
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i , j As Integer
    Dim k As Range
    i = Target.Row
    j = Target.Column
    Set k = Target
    If i >= 2 And j = 2 Then
    k = 200
    ElseIf i >= 2 And j = 3 Then
    k = 300
    ElseIf i >= 2 And j = 4 Then
    k = 400
    Else
    k = 500
    End If
    End Sub

    跟VBALesson 6比较,程序是不是明朗多了,在前课重复的用 Target.Row,Target.Column及Target来写程序是不是有一点烦。用变量的第一个好处大家马上感觉得出来,就是可以简化程序。
    使用变量前,你得先宣告变量。宣告变量的方法是在 "Dim " 后面写上变量 " i " As 后面接上变量的形态 "Integer"。
    Dim i , j As Integer 就是宣告 i 与 j 为整数变量,这是同时宣告二个变量 i 与 j 所以要在二个变量间加个 " , "号。
    Dim k As Range 是宣告 k 为范围资料形态,Range这是 Excel 特有的资料形态。
    i = Target.Row是把当前单元格的行数,指定给变量 i。
    j = Target.Column 是把当前单元格的栏数,指定给变量 j。
    Set k = Target 是把当前的单元格,指定给变量 k。
    用像 i 与 j 这样简单的变量,在程序的前面你可能还记得 i 或 j 代表着什厶。程序写长了,你可能忘记 i 或 j 代表着什厶。所以最好的方法是用比较有意义的代号,来为变量命名如 iRow 或 iCol 来取代 i 及 j 。


    8.Worksheet_Change()事件
    体会一下Worksheet_Change()事件。
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim iRow, iCol As Integer
    iRow = Target.Row
    iCol = Target.Column
    If iRow >= 2 And iCol = 2 And Target <> "" Then
    Application.EnableEvents = False
    Cells(iRow, iCol + 1) = Cells(iRow, iCol) * 2
    Application.EnableEvents = True
    ElseIf iRow >= 2 And iCol = 2 And Target = "" Then
    Cells(iRow, iCol + 1) = ""
    Else
    Cells(iRow, iCol + 1) = ""
    End If
    End Sub

    前几个教程都是用Worksheet_SelectionChange 事件来举例子,大家应该能体会他是怎么一回事了吧。
    这个教程就是要让你来体会什么是Worksheet_Chang()事件。因为这二个事件在VBA都是非常有用的,所以一定要了解。
    简单的说,前者是你鼠标移动到那个单元格,就触发那个事件的执行。後者是要等到你点选的单元格,数有了改变才会触发事件的执行。二者执行的时机一前一後。
    Target <> "" 是代表限定当前的单元格要是有数的,才会执行以下三行的程序。
    Cells(iRow, iCol + 1) = Cells(iRow, iCol) * 2,是你在 B 栏输入数时,C 栏将可得到 B 栏二倍的数。
    Target = "" 是限定当前的单元格要是没有数的,才会执行以下一行的程序。
    Cells(iRow, iCol + 1) = "",是把 C 栏的数清成空格。
    Application.EnableEvents = False与Application.EnableEvents = True,这是个成双的程序,当你用了前者记得在执行其他程序後要写上後面的程序。它的目的在抑制事件连锁执行。简单的说就是,在 B 字段所触发的事件,不愿在其它单元格再触发另一个Worksheet_Change()事件。

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





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

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

    当前时区 GMT+8, 现在时间是 2025-12-13 13:32:30
    渝ICP备11001752号  Copyright @ 2006-2016 mscbsc.com  本站统一服务邮箱:mscbsc@163.com

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