Q11:如何高亮选中单元格/区域?
A11:如下示例高亮所选中所选单元格/区域,在工作表对象的SelectionChange事件触发的回调函数中添加如下代码。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("IV65536").Value = 1 Then '单元格“IV65536” 的值作为功能开关
Cells.Interior.ColorIndex = xlNone
Target.Interior.ColorIndex = 6 '高亮当前区域
End If
End Sub
说明:ColorIndex属性的取值为在调色板中的颜色编号。下图为默认调色板中的颜色编号值。在Excel帮助中搜索“ColorIndex”。
Q12:【代码调试】打开VBE编辑器有哪几种方法?
A12:以Excel2007为例,有如下几种。
一、快捷键<Alt+F11>;
二、 菜单“开发工具”->“查看代码”;
三、 工作表名称栏右键->“查看代码”。
Q13:【代码调试】Debug对象的常用使用方法有哪些?
A13:Debug对象只有如下两种方法:
一、Debug.Print方法,其打印结果在立即窗口显示。
Sub DebugPrintTest()
Dim bBool As Boolean
Dim dData As Date
Dim x As Variant
bBool = True
dData = Now
Debug.Print bBool '打印“True”
Debug.Print '打印空行
Debug.Print dData '打印“2012/8/27 0:29:14 ”
x = Empty
Debug.Print x '打印空行
x = Null
Debug.Print x '打印“Null”
End Sub
二、 Debug.Assert方法,当表达式为真时继续往下执行,当表达式为假时中断程序执行并进入中断模式。
Function DebugAssertTest(iX As Integer, iY As Integer) As Double
Debug.Assert iY <> 0
If iY <> 0 Then
DebugAssertTest = iX / iY
End If
End Function
Sub test1()
MsgBox DebugAssertTest(10, 2)
MsgBox DebugAssertTest(10, 0)
End Sub
Q14:【代码调试】中断程序有哪几种方法?
A14:有如下三种方法。
一、设置断点,设置/取消断点的快捷键为<F9>;
二、使用Debug.Assert,使用方法参考Q13的描述;
三、使用监视条件。操作方法:点击“视图”->“监视窗口”打开监视窗口,在监视窗口空白处点击右键->“添加监视”,在弹出的“添加监视”窗口中输入表达式,选择好“上下文”与“监视类型”,点击“确定”。
Q15:【代码调试】VBE中的立即窗口如何使用?
A15:使用方法:
一、在代码中使用Debug.Print可以将打印结果输出到立即窗口;
二、 在立即窗口中输入表达式,会立即计算并打印表达式的值。
Debug.Print 1+2
3
?1+2
3
?1=2
False
Q16:【对象方法】Range对象的AdvancedFilter方法如何使用?
A16:Range对象的AdvancedFilter方法对应高级筛选功能(鼠标点击菜单“数据”->“排序和筛选”->“高级”),如下图所示。
对应的VBA代码如下所示。
Sub Macro1()
Sheets("Database").Range("A1:F10").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("B2:C3"), _
CopyToRange:=Range("B5"), _
Unique:=False
End Sub
Range对象的AdvancedFilter方法的参数含义如下。
名称 | 必选/可选 | 数据类型 | 描述 |
Action | 必选 | XlFilterAction 的常量之一,用于指定是否就地复制或筛选列表。XlFilterAction 枚举有如下两个取值:xlFilterInPlace表示保留数据不动;xlFilterCopy表示将筛选出的数据复制到新位置。 | |
CriteriaRange | 可选 | Variant | 条件区域。如果省略该参数,则没有条件限制。 |
CopyToRange | 可选 | Variant | 如果 Action 为 xlFilterCopy,则为复制行的目标区域。否则,忽略该参数。 |
Unique | 可选 | Variant | 如果为 True,则只筛选唯一记录。如果为 False,则筛选符合条件的所有记录。默认值为 False。 |
Q17:C语言中的swich…case语句所对应的VB语句如何书写?
A17:参考如下示例,其中Single表示单精度浮点型变量类型。
Function GetExtra(num As Single) As Single
Select Case num
Case 1, 2
GetExtra = 1
Case 3 To 5
GetExtra = 1.05
Case Is > 5
GetExtra = 1.1
Case Else
GetExtra = 0
End Select
End Function
Q18:Sub过程和Function过程有什么区别?两者在使用时有什么注意事项?
A18:区别在于:Sub过程不能携带返回值,Function过程能够携带返回值。注意事项:在使用Call语句调用Sub过程或者Function过程时,如果过程有参数,则必须在被调用过程的参数周围加上括号;在直接调用Sub过程或者Function过程时,如果过程有参数,则不应该在被调用过程的参数周围加上括号。特别对于Function过程,如果要使用该过程的返回值,则应该在参数的周围加上括号;如果不需要使用带参数过程的返回值,则不需要在参数的周围加上括号。
Q19:执行宏(调用过程)有哪几种方式?
A19:有如下几种方式。
方式一:利用普通按钮(窗体控件或表单控件)调用过程;
方式二:利用命令按钮(ActiveX控件)调用过程,此种方式可在“设计模式”下双击命令按钮直接进入查看/编辑代码;
方式三:在自定义快速访问工具栏中调用过程,如下图所示;
方式四:在一个过程中调用另一个过程;
方式五:在Excel事件中调用过程,示例如下。
Private Sub Workbook_Open()
Call GetDatas
End Sub
Q20:
A20: