ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 兰色幻想

带你入门VBA,第四讲(如何控制关于工作薄与工作表)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-8-22 10:45 | 显示全部楼层

第四讲已经学完,现总结如下:

    本讲主要讲述了如何控制工作簿与工作表,如:新建一个工作簿、关闭指定工作簿、打开指定工作簿,下面详细说明:

一、工作簿常用方法、事件以及属性

1、新建一个工作簿 workbooks.add,此时新建的工作簿即为活动工作簿,大家可以直接在该工作簿中进行操作。一般情况下,新建的工作簿要赋值给一个对象变量,以方便对工作簿进行操作。如:

Private Sub CommandButton1_Click()
Dim FlagWorkbook As Workbook
'增加一个工作簿并将其赋值为对象变量
Set FlagWorkbook = Workbooks.Add
'测试增加的工作簿是不是活动工作簿
MsgBox ActiveWorkbook.Name
'利用工作簿属性
With FlagWorkbook
    '保护工作簿
    .Password = "123"
    '另存工作簿
    .SaveAs "d:/" & "新建工作簿测试"
End With
End Sub

2、关闭工作簿 workbooks.close表示关闭所有打开的工簿              workbooks(饱含路径的工作簿名称).close表示关闭指定的工作簿,如:

Sub test1()
'workbooks.close关闭工作簿
Dim t As Workbook
For Each t In Workbooks
'thisworkbook表示当前工作簿,如果工作簿的名称不等于活动工作簿的名称,那么将其删除
   If t.Name <> ThisWorkbook.Name Then
       t.Close
   End If
Next t
End Sub

3、打开工作簿 workbooks.open filename:=包含路径的工作簿名称

Sub test2()
'workbooks(工作簿名称包含路径) 打开工作簿
Dim t As String
t = "F:\VBA练习\4.xls"
Workbooks.Open t
'把某个工作簿设置为当前工作簿 activate
Workbooks("第五讲 如何控制工作簿与工作表").Activate

End Sub

   在学习工作簿打开方法时,可以查看open的一些参数,如:filename,password等

4、统计已打开工作簿的数量 workbooks.count

Sub test3()
'workbooks.count 统计已打开工作簿的数量,不含加载宏所在的工作簿
'debug.print 表示在立即窗口中输出结果,可以按ctrl+g在立即窗口中查看结果

Debug.Print Workbooks.Count

End Sub

5、其他

一次新建多个工作簿

Sub test4()
'一次新建多个工作簿,并且将其另存,每新建一个工作簿,则新建的工作簿及为活动工作簿
Const k As Integer = 5
Dim t As Workbook
'屏幕更新
Application.ScreenUpdating = False
For i = 1 To k
    Set t = Workbooks.Add
    ActiveWorkbook.SaveAs Filename:="F:\VBA练习\" & t.Name
   
'   Set t = Workbooks.Add
'   t.SaveAs "F:\VBA练习\" & t.Name
   t.Close
Next i
Application.ScreenUpdating = True

End Sub

二、工作表

sheets.count '统计当前工作簿中工作表的数量

sheets(1).name '返回第一个工作表的名字

sheets("sheet1").activate '设置sheet1为活动工作表

sheets("sheet1").delete '删除sheet1工作表

sheets("sheet1").move after:=sheets(sheets.count) '把sheet1移到工作表末尾

sheets("sheet1").protect password:="123" '为工作表加密 注意:工作表加密不同于工作簿加密 workbooks("book1").saveas password:="123"

中间没有protect

sheets("sheet1").unprotect password:=123 解密

sheets("sheet1").usedrange '工作表中已用过的单元格

sheets("sheet1").visible=true

sheets("sheet1").scrollarea="a1:b10" 将sheet1工作表a1:b10设置为滚动区域,该区域外的其他单元格用户不能进行操作。我这里有个疑问,如何解除该设置?

三、零碎小知识

1、Application.DisplayAlerts = False '表示不显示对话框提示,如:在删除工作表时,系统会提示你是否要删除,如果加上该语句则没有该提示。

Private Sub Workbook_NewSheet(ByVal Sh As Object)
'NewSheet事件为工作簿事件,当在工作簿中插入新工作表时触发该事件
'Sh为新插入的工作表,也就是插入后继续删除,利用DisplayAlerts取消删除提示功能

Application.DisplayAlerts = False
Sh.Delete
Application.DisplayAlerts = True

End Sub

2、fileToOpen 知道有这么个单词就可以了,在实际应用中,可以查看帮助

Sub test()
'打开不同类型的文件,直接与用户进行交互
fileToOpen = Application _
    .GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
    MsgBox "Open " & fileToOpen
End If

End Sub

3、Application.ScreenUpdating = False 屏蔽屏幕更新,当运算复杂,过程很多时,用户可以看到程序的运行过程,如果使用该语句,则不显示


四、心得

    如果你对某个方法或属性不懂,选取该属性或方法后按F1,即可看到该方法或属性的帮助说明。前提是你要能想到相关的单词,所以,我们目前的主要学习目的就是看看常用的单词和一些编程的思想,在实际应用中,对于不懂得单词可以通过上述方法查看帮助。

PixyDLbB.rar (15.61 KB, 下载次数: 42)
[此贴子已经被作者于2006-8-22 10:49:23编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-29 21:54 | 显示全部楼层
受益非浅阿

TA的精华主题

TA的得分主题

发表于 2006-8-30 10:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Private Sub WorksheetSelectionChange(ByVal Target As Range)

   If Target.EntireRow.Interior.ColorIndex10 Then

   Target.EntireRow.Interior.ColorIndex = 10Else

   Target.EntireRow.Interior.ColorIndex = 0End IfEnd Sub  关闭代码窗口回到Excel工作表中,若需要查看某行记录,只需单击该行中的任一单元格,此时该行将会自动填充绿色并高亮显示(若需改为其它颜色只需改变代码中相应的数值即可),再次单击该行中任一单元格将取消背景色的填充。另外可同时使多行记录填充背景,以方便查看或对比表格中的数据。  编辑提示:虽然单击记录前的行号可选定整行记录,相对之下,提供的方法在日常办公中更为方便和快捷。

请兰大侠帮我查看这段VBA代码,运行有错,不知道错在哪?请帮我更正好吗?在下不胜感激.

TA的精华主题

TA的得分主题

发表于 2006-9-19 11:30 | 显示全部楼层

兰大侠:

请问:Workbooks.Open "F:\VBA练习\4.xls"

 ActiveWorkbook.SaveAs Filename:="F:\VBA练习\" & t.Name

两句中中是否支持网络打开和保存呢?

TA的精华主题

TA的得分主题

发表于 2006-11-3 12:28 | 显示全部楼层
怎么好多代码粘贴上来以后为什么不分段呢?那些代码都变成一长串了。

TA的精华主题

TA的得分主题

发表于 2006-11-4 02:27 | 显示全部楼层

Sub 按钮6_单击()
Dim x, y As String
x = ActiveWorkbook.Path
y = Range("a1").Value
MsgBox x
MsgBox y
ActiveWorkbook.SaveAs filename:=x&"\"&y&".xls"
End Sub

我根据前面所说的写了一段另存为的代码,运行时却出错了,错在哪里,请好心人指出!

错误的原因是红色这句运行时出现“语法错误”

TA的精华主题

TA的得分主题

发表于 2006-11-4 02:27 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-11-4 02:36 | 显示全部楼层

呵呵,找到原因了,原来是少了几个空格

Sub 按钮6_单击()
Dim x, y As String
x = ActiveWorkbook.Path
y = Range("a1").Value
ActiveWorkbook.SaveAs Filename:=x & "\" & y & ".xls"
End Sub

解决了我的一个大问题,这里的东西真是太有用了。我会继续学习的。

TA的精华主题

TA的得分主题

发表于 2007-1-23 10:16 | 显示全部楼层
QUOTE:
以下是引用兰色幻想在2004-10-14 14:41:00的发言:

这是系统提供的,为什么这样定,我也不太清楚

我说怎么咋看也不懂怎么捕捉新建sheet这个信息的,原来老师也不懂

TA的精华主题

TA的得分主题

发表于 2007-1-23 10:20 | 显示全部楼层
QUOTE:
以下是引用兰色幻想在2004-10-14 15:11:00的发言:

这个我也不太清楚,帮助上是这么说的

设置displayalerts的false属性

是为了不让excel一直报警

在本例中为什么没有影响?因为实际上这个sub不是一直在运行

你必须有一次操作,它才会运行一次

所以它不会一直报

如果在其他sub中,就不敢保证,然后你不设false,就会看到弹出无数个确认对话框之类的

我认为是这样

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-20 11:28 , Processed in 0.035451 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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