vba - 打开文件中的宏如果你在开会,点击“确定”,如果没有,在excel中再次提及
问题描述
我想从表格中发出约会通知。如果已完成,请单击“确定”,并在 B 列中的表格中写入。如果没有,请在下次开发文件时重做。
这就是我所知道的,我不知道如何将 Okay 列 B 放在相应的行中,并使其重新出现。
Private Sub Workbook_Open()
For Each cell In Sheets("appointments").Range("A1:B500")
'''If cell.value = "yes" Then '''By column B
If cell.value = Date Then
MsgBox "appointments" & cell.Offset(0, 4).value, vbExclamation + vbYesNo + vbQuestion, "appointments"
End If
Next cell
End Sub
我将不胜感激任何帮助,想法,概念。
编辑:最后找到正确答案
解决方案
这里有几个想法
- 不要
cell
用作变量。它太接近预定义的对象 (Cells
)。相反,尝试MyCell
(或其他任何方法)。你还需要声明这个变量,这导致我#2 Option Explicit
. 始终在标题处使用它- 设置要循环的动态范围。我猜你只是想
Column A
从第二行(标题?)循环到最后使用的行 - 您需要将
MsgBox
输入设置为变量,然后If Then
围绕结果构建语句 - 考虑使用
vbYesNoCancel
. 如果你想打开这本书快速检查一些东西而不回答一系列不可避免的弹出窗口怎么办?没有必要,但您可以选择Cancel
和Exit Sub
MsgBox
为了便于阅读,我在这里取出了你的文字。也许您应该将提示更改为类似Have you completed [this] appointment?
的内容,这将产生Yes
,No
或的选项Cancel
。
Option Explicit
Private Sub Workbook_Open()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Appointment")
Dim MyCell As Range, LRow As Long, Ans As String
LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
For Each MyCell In ws.Range("A2:A" & LRow) '<=== Dynamic Range
If MyCell = Date Then
Ans = MsgBox("Select One", vbYesNoCancel)
If Ans = vbYes Then
'Do something if YES
ElseIf Ans = vbNo Then
'Do something if NO
ElseIf Ans = vbCancel Then
'Do something if CANCEL (Exit Sub?)
End If
End If
Next MyCell
End Sub
推荐阅读
- java - 想要检查用户输入并相应地给出提示
- chart.js - Chart.js stepSize 不适用于 min
- wcf - 是否可以使用浏览器中的普通 netHttpBinding 创建到 WCF 服务的基于肥皂的 websocket 连接?
- iphone - 使用 iOS Web Inspector 调试问题
- angular - Angular Animation 在 IE11 和 Firefox 中没有过渡(在 Chrome 中工作)
- django - Django - super(ModelForm, self).clean() 没有引发 ValidationError
- node.js - 导入时强制转换类的名称以防止“不是构造函数”错误
- php - 使用 session_start() 和 jQuery 进行表单验证不会显示任何错误,我的错误在哪里?
- javascript - 如何在没有变异的情况下更改对象内部的对象?
- powershell - 需要来自 Invoke-WebRequest 输出的特定字符串行