用于更新Workbook_Open上的列的VBA代码

时间:2016-01-07 10:51:21

标签: excel-vba vba excel

我一直在通过一些VBA进行混乱,以改进我们在工作场所使用的请求跟踪器,这些跟踪器已经在Highschool大约十年前完成了一些VB.NET。当我被困住时,一些谷歌搜索找到答案的试验和错误对我有好处,但我不能为我的生活把这一点想出来......

我想在打开工作簿时运行一些代码来更新特定列中的单元格。我得到了这个工作在Worksheet_Change事件,但这将经常运行它,随着记录数量的增加,我担心它会减慢速度。

我的问题是,当我不在工作表代码中时,我不知道引用该列的语法。我(虚弱)的尝试如下:

            Private Sub Workbook_Open()
                If ThisWorkbook.Sheets("2016").Columns(10).Value = "x" Then
                    ThisWorkbook.Sheets("2016").Columns(11).Value = Application.WorksheetFunction.NetworkDays(ThisWorkbook.Sheets("2016").Columns(7).Value, Date) - 1
                End If
            End Sub

我们的想法是,如果列J包含x列K,则应显示列G中的值(记录日期请求)和今天的日期之间的工作天数,以便显示请求的持续时间一直很出色

1 个答案:

答案 0 :(得分:0)

不需要宏,可以使用下面的公式

来完成



=IF(J1="x",NETWORKDAYS(G1,TEXT(NOW(),"mm/dd/yyyy"))-1)




如果您希望通过宏完成,希望代码可以帮助您:)



Private Sub Workbook_Open()
l = Sheets("2016").Columns(10).End(xlDown).Row
For c = 1 To l
If Cells(c, 10).Value <> "" Then
a = Sheets("2016").Cells(c, 7).Value
b = Application.WorksheetFunction.Text(Now(), "mm/dd/yyy")
    If ThisWorkbook.Sheets("2016").Cells(c, 10).Value = "x" Then
    ThisWorkbook.Sheets("2016").Cells(c, 11).Value = WorksheetFunction.NetworkDays(a, b) - 1
    End If
End If
Next c
End Sub
&#13;
&#13;
&#13;

如果您想要解决特定列中的任何单元格,请使用单元格(row_no,col_no)