excel - 根据另一列上的 IF 语句在 Msgbox 中显示单元格值 - Excel VBA
问题描述
我想创建一个 Msgbox 警报,告诉我员工合同何时到期。
那些在 4 - 1 个月到期的合同将用红色填充它们的单元格:
到目前为止,这是我的代码:
Private Sub workbook_open()
Dim rngData As Range
Dim rngCell As Range
Dim counter As Long: counter = 0
Set rngData = Range("E4:E" & Cells(Rows.Count, Range("E3").Column).End(xlUp).Row)
For Each rngCell In rngData
If rngCell.Value = "4" Or rngCell.Value = "3" Or rngCell.Value = "2" Or rngCell.Value = "1" And rngCell.Value <> "" Then
counter = counter + 1
End If
Next rngCell
MsgBox counter & " employees are reaching their contract expiration date!"
Range("A4:E13").Sort _
Key1:=Range("E4"), Order1:=xlAscending
End Sub
但是,我如何包含一行代码来告诉我合同即将到期的员工的 EE 编号,并同时显示在 Msgbox 中?
解决方案
您也可以只构建一个字符串列表以在循环结束时显示。
Private Sub workbook_open()
Dim rngData As Range
Dim rngCell As Range
Dim expired As String
Dim counter As Long: counter = 0
Set rngData = Range("E4:E" & Cells(Rows.Count, Range("E3").Column).End(xlUp).Row)
For Each rngCell In rngData
If rngCell.Value = "4" Or rngCell.Value = "3" Or _
rngCell.Value = "2" Or rngCell.Value = "1" And rngCell.Value <> "" Then
counter = counter + 1
'--- add to the list of expired EE Numbers
expired = expired & rngCell.Offset(0, -4).Value & ","
End If
Next rngCell
expired = Left$(expired, Len(expired) - 1) 'delete the trailing comma
MsgBox counter & " employees are reaching their contract expiration date! (" & _
expired & ")"
Range("A4:E13").Sort Key1:=Range("E4"), Order1:=xlAscending
End Sub
推荐阅读
- c - 获取堆栈错误:0 [main] stringL 1123 cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 stringL.exe.stackdump
- node.js - Puppeteer 文件选择器
- android - 如果 Google Pay 在您的国家/地区不可用,如何将信用卡付款添加到 Android 应用程序?
- android - 两个移动设备上的Android AudioRecorder读取方法问题1)Redmi note 5 pro 2)三星m10s
- rx-java - rxJava 的 API 是如何工作的
- android - png 文件将被flutter的发布版本破坏
- hibernate - JPA继承设计问题
- node.js - 如何在不执行 Express Js Promise 中的下一条语句的情况下从 .then() 中逃脱?
- r - 在 R 版本 4.0 中加载 ggplot2 的问题
- python - 安装 PyQt5 后无法启动 Spyder