VBA检查最后一个单元格是否等于不同单元格上的单元格
我有一个用于logging信息的电子表格。 在一张纸上input数据,然后VBA更新存储信息的第二张纸。
我想编写一个代码来检查日志最后一行的单元格(它将随着每次更新而改变)是否等于input页面上的单元格。
目的是阻止某人更新日志两次,我已经有一个警告,它已经更新,但要放在一个万无一失的系统,以停止logging两次进入。
我是VBA新手,所以不知道从哪里开始。
以下是实现这个的一个例子。 我已经添加了评论来解释VBA中发生的事情。
- 在Excel中,按Alt + F11
- 在左侧的项目窗口中,如果尚未展开,双击“ThisWorkbook”
- 如果它不在那里,请在主窗口中键入
Option Explicit
作为第一个Option Explicit
。 这意味着代码将不会运行,除非所有使用的variables都被声明,这是一个好习惯 - 通过下面的代码进入窗口
- 使用代码中的光标,可以按F8逐行运行以查看正在发生的事情,也可以按F5一次运行它。
您将需要将其调整为您所需的工作簿,工作表和单元格/列。
Public Sub Sample() 'Clearly declare variables, in the case we are using them 'to reference a workbook and a worksheet Dim WkBk As Workbook Dim WkSht As Worksheet 'Set the WkBk variable (which was declared as a workbook, 'which means it can only be used for workbook objects. 'I this instance we are refering to ThisWorkbook, 'which is as it sounds. Set WkBk = ThisWorkbook 'We can now make a reference to a specific worksheet 'within our referenced workbook Set WkSht = WkBk.Worksheets("Sheet2") 'This IF statement is comparing the value of cell 'A1 on Sheet1 to the the value of the last populated cell 'in column A of Sheet2 (the sheet we created a reference to) If WkBk.Worksheets("Sheet1").Range("A1") = WkSht.Range("A" & WkSht.Rows.Count).End(xlUp) Then MsgBox "It was a match" End If Set WkSht = Nothing Set WkBk = Nothing End Sub