大多数情况下,VBA与变量一起使用。 对象(例如工作表,单元格或数据库)仅在读取其属性(值,公式,字体...)或使用方法(保存,打开...)时使用。 但是它们的事件很少使用,主要是在使用MS Forms时使用。
Excel具有两种非常重要的对象类型:工作簿和工作表,它们除了具有属性和方法外,还具有事件。
工作表的事件不会显示在代码编辑器的任何组合框中,但是您可以通过单击F2(查看对象浏览器)来获得事件列表。
工作表的事件是:
启用
DoubleClick之前
BeforeRightClick
计算
更改
停用
跟随超链接
数据透视表更新
选择变更
如您所见,其中许多都与“我们用鼠标做什么”有关。
首先,我将告诉您该操作的用途,下面是完整的代码,因此您可以将其复制粘贴以开始在工作表中播放Minesweeper ...
是的 您将在工作表中玩Minesweeper,这就是本教程的全部内容。
让我们创建一个名为Mines的公共2D数组(哇,非常原始),尺寸为11x11(实际上,入门级Minesweeper板为9x9,但是要使用“通用算法”来计算正方形附近的地雷,我将边界留空而不是为每个边界设置特殊情况,但是的,我们的董事会将是9x9)
我将制作的第一个Sub称为“生成”(我知道我的创造力非常出色,我很着急^。^)。
“生成”将更改单元格的大小,使其看起来像正方形,然后将10个“ X”(随机)放入数组中,然后在数组的其余部分填充数字。 该算法非常简单,只需看一下即可。
然后它将隐藏我们不需要的行和列(请记住,此代码是为Excel 2003编写的,在使用Excel 2007时,可能需要更改此范围)。
现在,为了更好地处理事件,让我们声明GetAsyncKeyState函数,并创建一个名为RightButton的简单布尔函数,该函数将指示是否按下了鼠标的Right按钮。
好了,现在是我们两个主要事件^。^的时候了,我将在SelectionChange事件中进行所有操作。 但是当放置一个标志时,它也会使用BeforeRightClick事件。 请注意,它们的参数是称为Target的范围,它们是BYVAL。 对于BeforeRightClick,您还有一个名为Cancel的布尔值(顺便说一句,它是ByRef而不是ByVal)。
现在,只需将下面的代码放在Sheet1或Sheet2或任何工作表的代码窗口中,然后运行'Generate'子即可开始播放。 检查评论以查看其工作原理。
记住事件的顺序非常重要。 单击单元格上的“向右”按钮时,首先将更改选择,然后向右引爆。 因此SelectionChange事件将始终在BeforeRightClick之前运行。
Option Explicit
Dim Mines(1 To 11, 1 To 11)
Sub Generate()
Dim i(1 To 2) As Integer, j As Integer, k As Integer
'------------------------------'
'Give a nice look to our board '
'------------