我创建了一个用户表单来跟踪服务请求,我在最后一部分遇到了麻烦。
第一个" A"是服务ID,第二个是" B"日期。我想" B"成为今天的日期和" A"从1开始计算,当我明天添加一个新请求时,我想要" A"再次从1开始。
以下是列" A"的代码,当创建新记录时#34; A"上升但是当日期改变时它不会从0开始。任何想法?
'Service ID
'check row above
'if "Date" then out put "1"
'if yesterday then out put "1"
'if today then ouput + 1
If (Sheet1.Cells(Rows.Count, "B").End(xlUp).Value) = "Date" Then
serviceorder = "1"
ElseIf (Sheet1.Cells(Rows.Count, "B").End(xlUp).Value) < Date Then
serviceorder = "1"
ElseIf (Sheet1.Cells(Rows.Count, "B").End(xlUp).Value) = Date Then
serviceorder = (Sheet1.Cells(Rows.Count, "A").End(xlUp).Value) + 1
Else
End If
提前致谢。
答案 0 :(得分:0)
为什么不将A列设为COUNTIF
公式,以显示相应列B单元格中的日期在B列的所有列中显示的次数?这样当日期改变时,它将自动重置为1,并且每个新的时间在同一天输入请求,ID将增加1.VBA公式将是:
With Sheet1.Cells(Rows.Count, "A").End(xlUp).Offset(1)
.Formula = "=COUNTIF(B:B,B" & .Row & ")"
'Uncomment this next line if you want column A to contain values instead of formulas
'If you do uncomment it, make sure you have already put the date in the B column for this entry
'.Value = .Value
End With
答案 1 :(得分:-1)
我认为您的函数中的一般问题是Sheet1.Cells(Rows.Count, "B").End(xlUp)
。 Rows.Count意味着 - 正如它所说 - 表单中的行数是1048576.在我看来,你选取了列的最后一个单元格而End(xlUp)
不会让它变得更好。我认为Sheet1.Cells(1, "B").End(xlUp)
应该会更好。很抱歉,如果我错了,我无法在此处重现您的方案。