几种用VBA在单元格输入数据的方法

           作者:KLYan   出处:officefans
 
 这是试写的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 单元格输入vba做excel窗体录入教程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即可看到程序。"
              读取别表数据

           作者:KLYan   出处:officefans
 
  几种如何把别的工作表 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
              读取别表数据

           作者:KLYan   出处:officefans
 
  几种如何把别的工作表 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
        利用 Worksheet_SelectionChange 在限定的单元格输入数据

          作者:KLYan   出处:officefans
 
如何利用 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 >= 2Target.Column = 2二个条件成立时。
就是 (Target.Row >= 2) True(Target.Column = 2)True时,才执行下面的程序 Target=100
也就是 B 栏第二行及以下行用鼠标被点选时,才会被输入100,其它单元格则不被输入数据。
     比较Worksheet_SelectionChange()CommandButton1_Click()

         作者:KLYan   出处:officefans
 
比较 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 内定函数来取代TargetActiveCell Target最大的不同点他只能指定一个单元格。
就是你选取多个单元格也只有最上面的单元格会加上数据;用 Selection 取代 ActiveCell 用法就跟 Target 一样了。
          完整的 If.Then End 逻辑判断式

          作者:KLYan   出处:officefans
 
完整的 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 将是永远无法执行到的程序。
               为什麽要用变数

          作者:KLYan   出处:officefans
 
我们为什麽要用变数。
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.RowTarget.ColumnTarget来写程序是不是有一点烦。用变量的第一个好处大家马上感觉得出来,就是可以简化程序。
使用变量前,你得先宣告变量。宣告变量的方法是在 "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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。