繁体   English   中英

VBA代码更新Workbook_Open上的列

[英]VBA code to update a column on Workbook_Open

我一直在摸索一些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列中的值(记录了请求的日期)和今天的日期之间的工作天数,以便显示请求尚未完成的时间

不需要宏,可以使用以下公式完成

 =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 

如果要寻址特定列中的任何单元格,请使用单元格(row_no,col_no)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM