excel的365个常见问题答疑 - 答案(2)

2019-04-21 17:29

第 6页 /总 38页 第23章 365个常见问题答疑

问题52:

如何将工作簿另存到D盘中,且工作簿名由A1单元格的值决定。 答:使用Workbook.SaveAs方法。

ActiveWorkbook.SaveAs \问题53:

如何禁用单元格右键菜单?

答:将Cancel 参数赋值为True即可。

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Cancel = True

End Sub

问题54:

可以禁止双击修改单元格吗?

答:将Cancel 参数赋值为True即可。

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub

问题55:

如何一次性清除工作表中所有公式结果为错误值的单元格? 答:

On Error Resume Next

Cells.SpecialCells(xlCellTypeFormulas, 16) = \

问题56:

Evaluate方法可以将任意表达式进行转换计算吗? 答:不行,它有参数长度不超过256的限制。

问题57:

可以为自定义函数添加每一个参数的说明吗?

中:Excel 2010可以,通过MacroOptions的最后一个参数实现。Excel 2003和2007的MacroOptions只能添加函数说明,不能对参数添加说明。

问题58:

如何生成包括第X页 共Y页的页眉?

答:在PageSetup对象中使用“第&P页 共&N页”即可,P代表当前页,N代码总数。 ActiveSheet.PageSetup.LeftHeader = \第&P页 共&N页\问题59:

如何判断当前工作表处于筛选状态? 答:

MsgBox ActiveSheet.FilterMode

如果结果为True则表示处于筛选状态。

问题60:

可以用一句代码实现合并A1:A10的值吗?

答:Join能将数组的值合并成一个字符串,但不支持区域作参数,所以使用工作表函数Transpose将参数转换成数组后再配合Join即可实现: MsgBox Join(WorksheetFunction.Transpose([a1:a10]), \问题61:

第 7页 /总 38页 第23章 365个常见问题答疑

如何一键删除超链接? 答:

ActiveSheet.Hyperlinks.Delete

问题62:

可以用一句代码实现对二维数组变量赋值吗?

答:公式中的{}可以创建二维数组,添加[]后即可使其在VBA中使用。

Arr = [{1,2,3;4,5,6}] 问题63:

如何计算“D:\\工作”文件夹的大小?

VBA的FileLen只能计算文件大小,使用FSO对象的GetFolder才能获取文件夹的信息,代码如下:

CreateObject(\工作\问题64:

不用循环能计算1到100之间自然数之和吗? 答:直接调用数组公式即可,代码如下:

MsgBox [sum(row(1:100))] 问题65:

可以一句代码实现向下填充所有空白单元格吗? 答:

On error resume next '防止不存在空白单元格时出错

ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = \

问题66:

什么是溢出错误?

答:对变量赋值时,值大于它的有效范围,例如对Byte型的变量赋值300。

问题67:

下标越界是什么意思?

答:参数值超过了参数的上下限。例如工作表数量为3时,用代码访问第4个工作表,或者访问的对象不存在(例如写错了工作表名称、工作簿名称、图片名称等等)。 问题68:

如何禁止合并单元格和删除工作表时弹出提示?

答:在合并单元格或者删除工作表的代码前加“Application.DisplayAlerts = False”;在其后加“Application.DisplayAlerts = True”

问题69:

如何禁止用户中断程序的运行过程? 答:

Application.EnableCancelKey = xlDisabled

问题70:

可以在较单词时不区分大小写吗? 答:在模块的顶部写入以下代码:

Option Compare Text 问题71:

可以让数组的默认下标为1吗? 答:在模块的顶部写入以下代码:

Option Base 1 第 8页 /总 38页 第23章 365个常见问题答疑

问题72:

可以用VBA打开控制面板吗? 答:

a = Shell(\

或者

CreateObject(\问题73:

如何取得“d:\\123.xlsm”的创建时间? 答:

FileDateTime只能获取文件最后一次修改的时间,获取创建时间要用FSO对象的DateCreated属性实现。 MsgBox CreateObject(\问题74:

动态变量和静态变量的区别何在?

答:动态变量在结束过程时会释放变量值,静态变量在关闭工作簿时或者使用End时才释放变量值。

问题75:

如何防止程序因出错而弹出错误对话框? 答:使用防错语句:

On error resume next 问题76:

批量删除或者插入行时,如何防止屏幕闪动? 答:使用“Application.ScreenUpdating = False” 但在程序结束时需要恢复此设置。

问题77:

运行窗体时可以只显示窗体,看不到Excel界面吗? 答:在运行窗体前加入以下代码:

Application.Visible = False

再将“Application.Visible = True”代码放在窗体的关闭事件中,使Excel界面还原为显示状态。

问题78:

如果隐藏所有批注,红色箭头也能一起隐藏吗? 答:

Application.DisplayCommentIndicator = xlNoIndicator 问题79:

在对话框中录入字符串时,可以显示为星号吗?

答:使用窗体中的文字框时可以。将其PasswordChar属性设置为True即可,inputbox对话框不可以,除非调用API函数产生一个inputbox类似的对话框。

问题80:

如何取得Excel的安装路径? 答:

MsgBox Application.Path 问题81:

如何打开Windows自带的计算器?

第 9页 /总 38页 第23章 365个常见问题答疑

答:

Shell \

或者

CreateObject(\问题82:

如何获取活动单元格的批注文本? 答:

ActiveCell.Comment.Text

如果活动单元格没有批注则会出错,所以需要配合防错语句使用。 问题83:

如何在状态栏显示今天星期几? 答:

Application.StatusBar = Format(Date, \

其中AAAA表示中文的星期,如果需要英文的星期需要改用“DDDD”。

问题84:

Worksheet_Change事件中写入“Target = Evaluate(Target.Value)”用于转换表达式,为什么有时会出错?

答:Target代表当前正在录入值的所有单元格,如果用户在一个区域中录入就会出错,可以配合循环语句使用,逐一进行转换。当然Change事件还需要添加防止递归的代码。

还有一种情况也会出错:单元格的字符长度超过256。

问题85: 什么是递归?

答:程序调用自身反复运算,类似于工作表中公式的迭代计算。 问题86:

在SheetChange事件中,如何防止溢出堆栈空间? 答:

Application.EnableEvents = False

但在过程结束时需要还原设置。 问题87:

如何取得已用区域最后一行的行号? 答:

ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1

但是已用区域的最后一行可能是空白行。

问题88:

当前区域和已用区域如何区分? 答:当前区域指以空行与空列的组合为边界的包含活动单元格的区域,而已用区域是工作表中所使用的区域,它与当前区域有时重合,有时不重合。

问题89:

什么是数组区域?

答:区域数组公式所占用的区域。录入区域数组公式时,需要选择一个区域,然后录入公式并再按【Ctrl+Shift+Enter】组合键结束。

问题90:

Range.End(3)中的3代表什么? 答:xlUp常量,表示向上。

第 10页 /总 38页 第23章 365个常见问题答疑

问题91:

如何获取第一行最后一个非空单元格? 答:

Cells(1, Columns.Count).End(xlToLeft) 问题92:

如何判断活动工作表是否为空表?

答:IsEmpty能判断对象是否已经初始化。如果返回值为True则表示当前表是空表,代码如下:

MsgBox IIf(IsEmpty(ActiveSheet.UsedRange), \空表\非空表\问题93:

为什么使用Application.Inputbox后返回值为是Range型? 答:最后一个参数未使用8。

问题94:

自定义函数只能返回值,不能改变单元格的值吗?

答:当然不是,既可以改变单元格的值,也可以删除单元格的值,还可以改变单元格的批注。

使用Replace可以修改任意单元格的值。 问题95:

Format函数和工作表函数TEXT一样的功能吗? 答:大多数功能一样,少数不同。TEXT的功能更强大,工作中可以调用TEXT代替Format使用。

问题96:

VBA能定制Excel启动画面吗?

答:可以增加一个,但是不能编辑原有的启动画面,也不可以关闭该启动画面。 问题97:

如何实现11:00时提示开会? 答:

Sub test()

Application.OnTime TimeValue(\开会\End Sub Sub 开会()

MsgBox \开会\End Sub

问题98:

如何为“生成批注”过程指定一个快捷键? 答:

Application.OnKey \生成批注\

以上代码表示按下【Ctrl+q】时执行过程“生成批注”。记住此时要区分大小写。 问题99:

可以让窗体中的文字框换行吗?

答:将文字框控件的MultiLine属性设置True即可。

问题100:

能否判断单元格的值和其显示的值是否一致?

答:有可能单元格中显示2,但其值本身是1。利用以下代码可以判断:


excel的365个常见问题答疑 - 答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:稻盛和夫

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

马上注册会员

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