Excel VBA 共五章学习实例(第1、2、6、7、9章)实用VBA源代码(3)

2018-12-20 10:22

Dim MergeCot As Integer Dim i As Integer With Sheet1

r = .Cells(.Rows.Count, 1).End(xlUp).Row For i = 2 To r

MergeStr = .Cells(i, 2).Value

MergeCot = .Cells(i, 2).MergeArea.Count .Cells(i, 2).UnMerge

.Range(.Cells(i, 2), .Cells(i + MergeCot - 1, 2)).Value = MergeStr i = i + MergeCot - 1 Next

.Range(\End With End Sub

范例14 高亮显示选定单元格区域

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Cells.Interior.ColorIndex = xlColorIndexNone

Target.Interior.ColorIndex = Int(56 * Rnd() + 1) End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rng As Range

Cells.Interior.ColorIndex = xlColorIndexNone

Set rng = Application.Union(Target.EntireColumn, Target.EntireRow) rng.Interior.ColorIndex = Int(56 * Rnd() + 1) Set rng = Nothing End Sub

范例15 双击被保护单元格时不显示提示消息框

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Locked = True Then

MsgBox \此单元格已保护,不能编辑!\Cancel = True End If End Sub

范例16 单元格录入数据后自动保护

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim msg As Byte With Target

If Not Application.Intersect(Target, Range(\

If .Count > 1 Then

11

Range(\Exit Sub End If

ActiveSheet.Unprotect

If Len(Trim(.Value)) > 0 Then

msg = MsgBox(\当前单元格已录入数据,是否修改?\.Locked = IIf(msg = 6, False, True) End If

ActiveSheet.Protect

ActiveSheet.EnableSelection = 0 End If End With End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range(\

If Len(Trim(Target.Value)) > 0 Then

ActiveSheet.Unprotect Target.Locked = True ActiveSheet.Protect

ActiveSheet.EnableSelection = 0 End If End If End Sub

范例17 Target参数的使用方法

使用Address 属性

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Select Case Target.Address(0, 0)

Case \

Sh.Unprotect Case \

Sh.Protect Case Else End Select End Sub

使用Column属性和Row属性

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column < 3 And Target.Row < 11 Then

MsgBox \你选择了\单元格\End If End Sub

使用Intersect方法

12

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Application.Intersect(Target, Union(Range(\Range(\Is Nothing Then

If Target.Count = 1 Then

MsgBox \你选择了\单元格\End If End If End Sub

第2章 Sheet(工作表)对象(返回)

范例18 引用工作表的方法

18-1 使用工作表名称

Sub ShtName()

Worksheets(\End Sub

18-2 使用工作表索引号

Sub ShtIndex()

Worksheets(Worksheets.Count).Select End Sub

18-3 使用工作表代码名称

Sub ShtCodeName() Sheet3.Select End Sub

范例19 选择工作表的方法

Sub ShtSelect()

MsgBox \下面将选择\工作表\ Sheet2.Select

MsgBox \下面将激活\工作表\ Sheet3.Activate End Sub

Sub SelectSht()

Dim Sht As Worksheet

13

For Each Sht In Worksheets Sht.Select False Next End Sub

Sub SelectSheets() Worksheets.Select End Sub

Sub ArraySheets()

Worksheets(Array(1, 3)).Select End Sub

范例20 遍历工作表的方法

20-1 使用For...Next 语句

Sub TraversalShtOne() Dim i As Integer Dim Str As String

For i = 1 To Worksheets.Count

Str = Str & Worksheets(i).Name & vbCrLf Next

MsgBox \工作簿中含有以下工作表:\End Sub

20-1 使用For Each...Next 语句

Sub TraversalShtTwo() Dim Sht As Worksheet Dim Str As String

For Each Sht In Worksheets

Str = Str & Sht.Name & vbCrLf Next

MsgBox \工作簿中含有以下工作表:\End Sub

范例21 工作表的添加与删除

Sub ShtAddOne()

Worksheets.Add.Name = \数据\End Sub

Sub ShtAddTwo()

Dim i As Integer

14

Dim Sht As Worksheet With Worksheets For i = 1 To 6

Set Sht = .Add(after:=Worksheets(.Count)) Sht.Name = i Next End With

Set Sht = Nothing End Sub

Sub ShtDel()

Dim Sht As Worksheet

Application.DisplayAlerts = False For Each Sht In Worksheets

If Sht.Name <> \工作表的添加与删除\ Sht.Delete End If Next

Application.DisplayAlerts = True Set Sht = Nothing End Sub

Sub ShtAddThree()

Dim Sht As Worksheet

For Each Sht In Worksheets If Sht.Name = \数据\

If MsgBox(\工作簿中已有\数据\工作表,是否删除后添加?\ Application.DisplayAlerts = False Sht.Delete

Application.DisplayAlerts = True Else

Exit Sub End If End If Next

Worksheets.Add.Name = \数据\ Set Sht = Nothing End Sub

Sub ShtAddFour()

Dim arr As Variant Dim i As Integer

Dim Sht As Worksheet On Error Resume Next

arr = Array(1, 2, 3, 4, 5, 6) With Worksheets

For i = 0 To UBound(arr)

Set Sht = .Add(after:=Worksheets(.Count)) Sht.Name = arr(i) Next End With

15


Excel VBA 共五章学习实例(第1、2、6、7、9章)实用VBA源代码(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Abaqus 使用点滴1.

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: