簡體   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