如何使用 VBA Excel 代码向拥有过时信息的用户显示弹出消息
How to use VBA Excel Code to display a pop-up message to users that have out of date information
我希望在点差sheet打开时弹出一个窗口。
每个技术人员都需要在传播中记录他们的问题sheet。当 sheet 打开时,我希望它根据问题列表检查用户的用户名,并提醒他们任何超过他们估计时间的用户名。如果任何问题超出了估计的时间范围,我希望 sheet 弹出一个对话框或 windows 说您有问题 A、B、C,并且需要关闭这些问题或扩展。
- A 列为问题编号。
- Col B 是问题的开始日期。
- C 列是解决问题的预期天数(30、60、90、X - 使用这些选项的下拉菜单。X 表示这将是一个延长的时间范围;输入时未知.)
- Col D 是 Closed 或 Open 状态,也由下拉菜单控制。
- E 列是关闭日期,我已经使用 VBA 代码在从下拉列表中选择关闭时自动填充。
- F 列是技术处理问题的名称。
SS of Spreadsheet
这是我使用代码的地方
'DECLARE VARIABLE
Dim x_matrix As Range
Dim x_copyrange, sheet_name, issueString, currentTechName As String
Dim x_step, x_fnl_row As Long
Dim issIDCol, issStatCol, issTechCol, IssLogDateCol As Variant
Dim IssExpClosCol As Variant
'DEFINE VARIABLE
sheet_name = "Log" 'PUT YOUR SHEET NAME
issueString = "Alerts have been found to be late, Please extend or Close"
issIDCol = Columns(1) 'Put Your Report ID Column
currentTechName = Application.UserName 'returns username currently using sheet
issTechCol = Columns(6) 'The Tech name column
issStatCol = Columns(4) ' The Issue Status Column
IssLogDateCol = Columns(2) 'Column where you are logging the date issue reported
IssExpClosCol = Columns(3) '30, 60, 90, X Column
'CREATE MATRIX
x_fnl_row = Worksheets(sheet_name).Cells(Rows.Count, 1).End(xlUp).Row
'Find last row of Log # Col & used to make the loop larger each time an entry is added
Let x_copyrange = "a" & 1 & ":" & "F" & x_fnl_row
'sets a1 to bottom of last entry in F as a range
Set x_matrix = Worksheets(sheet_name).Range(x_copyrange)
'Sets the parameters for X_Matrix as a range on the worksheet
'LOOP TO
x_step = Rows(2) 'Skips the header row at the top of sheet so loop will not loop through row 1
Do While x_step <= x_fnl_row 'Sets the loop to run through the range as long as the final row is farther down then the first row
'This is your Loop
'Make your Conditions Here
'Issue is open and issue date starting is greater than expected closure date.
'Tech Names Match
If x_matrix(x_step, IssExpClosCol) <> "PPSC Closure" Then ' Xmatrix is the whole range (Xstep is the rows of range, tells it what col to search)
If x_matrix(x_step, issTechCol) = currentTechName And _
x_matrix(x_step, issStatCol) = "OPEN" And _
Now() > x_matrix(x_step, IssLogDateCol) + x_matrix(x_step, IssExpClosCol) _
Then
issueString = issueString + x_matrix(x_step, issIDCol) + ", "
End If
End If
x_step = x_step + 1
Loop
MsgBox (issueString)
End Sub
我在下面发布了一些基于我设置电子表格列的方式的代码(见附图)。我认为这可能就是您要的。看看它是否适合你。
Sub standard()
'DECLARE VARIABLE
Dim x_matrix, y_matrix, z_matrix As Range
Dim x_copyrange, y_copyrange, z_copyrange, sheet_name, issueString, currentTechName As String
Dim x_step, y_step, z_step, x_fnl_row, y_fnl_row, z_fnl_row As Integer
Dim issIDCol, issStatCol, issTechCol, IssLogDateCol, IssExpClosCol As Integer
'DEFINE VARIABLE
sheet_name = "Log" 'PUT YOUR SHEET NAME
issueString = "Alerts have been found to be late, Please extend or Close"
issIDCol = 1 'Put Your Report ID Column
currentTechName = Application.UserName 'Sound like you need to add your VBA here to know the tech using the sheet
issTechCol = 6 'The Tech name column
issStatCol = 4 ' The Issue Status Column
IssLogDateCol = 2 'Column where you are logging the date issue reported
IssExpClosCol = 3 '30, 60, 90, X Column
'CREATE MATIX
x_fnl_row = Worksheets(sheet_name).Cells(Rows.Count, issIDCol).End(xlUp).Row
Let x_copyrange = "a" & 1 & ":" & "e" & x_fnl_row
Set x_matrix = Worksheets(sheet_name).Range(x_copyrange)
'LOOP TO
x_step = 2 'I am guessing you have a Header Row so start at 2
Do While x_step <= x_fnl_row
'This is your Loop
'Make your Conditions Here
'Issue is open and issue date starting is greater than expected closure date.
'Tech Names Match
If x_matrix(x_step, IssExpClosCol) <> "X" Then
If x_matrix(x_step, issTechCol) = currentTechName And _
x_matrix(x_step, issStatCol) <> "Closed" And _
Now() > x_matrix(x_step, IssLogDateCol) + x_matrix(x_step, IssExpClosCol) _
Then
issueString = issueString + x_matrix(x_step, issIDCol) + ", "
End If
End If
x_step = x_step + 1
Loop
MsgBox (issueString)
End Sub
我希望在点差sheet打开时弹出一个窗口。
每个技术人员都需要在传播中记录他们的问题sheet。当 sheet 打开时,我希望它根据问题列表检查用户的用户名,并提醒他们任何超过他们估计时间的用户名。如果任何问题超出了估计的时间范围,我希望 sheet 弹出一个对话框或 windows 说您有问题 A、B、C,并且需要关闭这些问题或扩展。
- A 列为问题编号。
- Col B 是问题的开始日期。
- C 列是解决问题的预期天数(30、60、90、X - 使用这些选项的下拉菜单。X 表示这将是一个延长的时间范围;输入时未知.)
- Col D 是 Closed 或 Open 状态,也由下拉菜单控制。
- E 列是关闭日期,我已经使用 VBA 代码在从下拉列表中选择关闭时自动填充。
- F 列是技术处理问题的名称。
SS of Spreadsheet
这是我使用代码的地方
'DECLARE VARIABLE
Dim x_matrix As Range
Dim x_copyrange, sheet_name, issueString, currentTechName As String
Dim x_step, x_fnl_row As Long
Dim issIDCol, issStatCol, issTechCol, IssLogDateCol As Variant
Dim IssExpClosCol As Variant
'DEFINE VARIABLE
sheet_name = "Log" 'PUT YOUR SHEET NAME
issueString = "Alerts have been found to be late, Please extend or Close"
issIDCol = Columns(1) 'Put Your Report ID Column
currentTechName = Application.UserName 'returns username currently using sheet
issTechCol = Columns(6) 'The Tech name column
issStatCol = Columns(4) ' The Issue Status Column
IssLogDateCol = Columns(2) 'Column where you are logging the date issue reported
IssExpClosCol = Columns(3) '30, 60, 90, X Column
'CREATE MATRIX
x_fnl_row = Worksheets(sheet_name).Cells(Rows.Count, 1).End(xlUp).Row
'Find last row of Log # Col & used to make the loop larger each time an entry is added
Let x_copyrange = "a" & 1 & ":" & "F" & x_fnl_row
'sets a1 to bottom of last entry in F as a range
Set x_matrix = Worksheets(sheet_name).Range(x_copyrange)
'Sets the parameters for X_Matrix as a range on the worksheet
'LOOP TO
x_step = Rows(2) 'Skips the header row at the top of sheet so loop will not loop through row 1
Do While x_step <= x_fnl_row 'Sets the loop to run through the range as long as the final row is farther down then the first row
'This is your Loop
'Make your Conditions Here
'Issue is open and issue date starting is greater than expected closure date.
'Tech Names Match
If x_matrix(x_step, IssExpClosCol) <> "PPSC Closure" Then ' Xmatrix is the whole range (Xstep is the rows of range, tells it what col to search)
If x_matrix(x_step, issTechCol) = currentTechName And _
x_matrix(x_step, issStatCol) = "OPEN" And _
Now() > x_matrix(x_step, IssLogDateCol) + x_matrix(x_step, IssExpClosCol) _
Then
issueString = issueString + x_matrix(x_step, issIDCol) + ", "
End If
End If
x_step = x_step + 1
Loop
MsgBox (issueString)
End Sub
我在下面发布了一些基于我设置电子表格列的方式的代码(见附图)。我认为这可能就是您要的。看看它是否适合你。
Sub standard()
'DECLARE VARIABLE
Dim x_matrix, y_matrix, z_matrix As Range
Dim x_copyrange, y_copyrange, z_copyrange, sheet_name, issueString, currentTechName As String
Dim x_step, y_step, z_step, x_fnl_row, y_fnl_row, z_fnl_row As Integer
Dim issIDCol, issStatCol, issTechCol, IssLogDateCol, IssExpClosCol As Integer
'DEFINE VARIABLE
sheet_name = "Log" 'PUT YOUR SHEET NAME
issueString = "Alerts have been found to be late, Please extend or Close"
issIDCol = 1 'Put Your Report ID Column
currentTechName = Application.UserName 'Sound like you need to add your VBA here to know the tech using the sheet
issTechCol = 6 'The Tech name column
issStatCol = 4 ' The Issue Status Column
IssLogDateCol = 2 'Column where you are logging the date issue reported
IssExpClosCol = 3 '30, 60, 90, X Column
'CREATE MATIX
x_fnl_row = Worksheets(sheet_name).Cells(Rows.Count, issIDCol).End(xlUp).Row
Let x_copyrange = "a" & 1 & ":" & "e" & x_fnl_row
Set x_matrix = Worksheets(sheet_name).Range(x_copyrange)
'LOOP TO
x_step = 2 'I am guessing you have a Header Row so start at 2
Do While x_step <= x_fnl_row
'This is your Loop
'Make your Conditions Here
'Issue is open and issue date starting is greater than expected closure date.
'Tech Names Match
If x_matrix(x_step, IssExpClosCol) <> "X" Then
If x_matrix(x_step, issTechCol) = currentTechName And _
x_matrix(x_step, issStatCol) <> "Closed" And _
Now() > x_matrix(x_step, IssLogDateCol) + x_matrix(x_step, IssExpClosCol) _
Then
issueString = issueString + x_matrix(x_step, issIDCol) + ", "
End If
End If
x_step = x_step + 1
Loop
MsgBox (issueString)
End Sub