發表文章

目前顯示的是有「VBA」標籤的文章

多人共用活頁簿如何自動存檔(64位元)

如果開啟Excel共用活頁簿的功能 會鎖住巨集或增益集中有關存檔的功能 也就是執行workbook.save的時侯會出現錯誤訊息 但我意外發現workbook.saveas不會被擋 所以可以寫成以下 Function workbook_index(wb As Workbook) As Integer '自定函數以抓出workbook的index(編碼),因為有可能一次開啟多個excel Dim i As Integer     For i = 1 To Workbooks.Count         If Workbooks(i).Name = wb.Name Then         workbook_index = i         Exit For         End If     Next i End Function Sub AutoSave()  '開始執行存檔過程   Dim myWb As Workbook   Dim myFileName As String   Dim Myfile2   Name = ActiveWorkbook.Name   myFileName = ThisWorkbook.Path & "\" & Name   Set myWb = Workbooks(workbook_index(ActiveWorkbook)) '抓出目前執行的workbook   Application.DisplayAlerts = False '不要跳出警告視窗   myWb.SaveAs Filename:=myFileName '將檔案另存到自已   Application.DisplayAlerts = True '再將警告視窗功能開啟   Myfile2 = FileDateTime(ThisWorkbook.Path & "\" & ...

使用VBA記錄股市每分鐘的交易記錄

其實也是一個很簡單的程式,但是看起來就不像是高手寫的,因為一直跳來跳去 假設工作表2是DDE的資料,將DDE的資料每分鐘copy到工作表1 Dim i As Single '宣告變數i Dim Workday As Integer  '宣告變數Workday Private Sub workbook_open() '當這個excel檔案打開時,執行以下程序 Workday = Application.Evaluate("WEEKDAY(TODAY())-1")     '算出今天是一星期中的第幾天,並將數值存入Workday If Workday >= 1 And Workday <= 5 Then   '判斷是否為工作天     If Format(Time, "hh:mm:ss") >= "09:00:00" And Format(Time, "hh:mm:ss") <= "13:31:00" Then   '判斷是否為盤中         Call a  '執行程序a     Else         Application.OnTime TimeValue("00:09:00"), "ThisWorkBook.a"  '如果不是在盤中則等待明天九點開盤     End If End If End Sub Private Sub a() '宣告一個程序a    i = 2    '將i預設為2,因為資料是由第2行開始貼上    Call b   '執行程序b  End Sub  Private Sub b() '宣告一個程序b     Range("Stock200").Rows("2:201").Copy ...

如何用VBA算出今天星期幾

最近在做論文的東西要寫VBA 本來二技畢業就發誓不要再寫程式的我 還是逃不開這個魔咒 連在寫這篇文章的時侯還肚子痛 跑去拉屎之後再回來寫 有感於常常在網路上找很多資料,可是有時侯再找就不見了 決定把我寫好的東西記在部落格上 這樣子別人也可以查得到 高手路過可能也可以幫我修改一下 今天寫這個是為了要判斷當天是不是工作天 Sub test() Dim Workday As Integer Dim Response Workday = Application.Evaluate("WEEKDAY(TODAY())-1") 'Application.Evaluate這個好東西可以讓EXCEL裡面的函數執行,weekday()會回傳今天是一個星期的第幾天,-1是因為weekday內定星期日是第一天 Response = MsgBox(Workday, vbYesNo) '為了測有沒有寫對 所以用MsgBox顯示Workday的數字 End Sub