一系列 Microsoft 試算表軟體,具有可用來對資料進行分析、製圖及通訊的工具。
你把 ActiveSheet 改掉就可以了。
前面說過,Active 需觸發 Focus ,是全 Windows 的事件,跟 VBA 沒關係。我從 Excel 5.0 就開始寫 VBA ,那時候就這樣,跟 Office 365 沒關係。
不好意思,那請問我該改成什麼呢?
是把 With ActiveSheet 改成 With ThisWorkbook.Sheets(sSheetName)
這樣嗎?謝謝。
以前win7使用office 2010版的excel檔,不同的活頁簿可以獨立開啟來使用
這樣各個活頁簿裡的vba程式碼不會互相影響
但現在換了win 10,租用office 365家庭版,開啟了excel,要開不同的活頁簿時
卻無法獨立開啟不同的活頁簿,所以只要其中一個活頁簿在使用,另一個活頁簿就會****擾而停止動作
這造成我在工作上有很大的困擾
請問office 365是否能像office 2010 一樣,可以獨立開啟數個活頁簿嗎?
我真的很需要這方面的協助,謝謝。
一系列 Microsoft 試算表軟體,具有可用來對資料進行分析、製圖及通訊的工具。
鎖定的問題。 此問題已從 Microsoft 支援服務社群移轉。 您可以對其是否有幫助進行投票,但無法對問題新增註解或回覆,或進行追蹤。
你把 ActiveSheet 改掉就可以了。
前面說過,Active 需觸發 Focus ,是全 Windows 的事件,跟 VBA 沒關係。我從 Excel 5.0 就開始寫 VBA ,那時候就這樣,跟 Office 365 沒關係。
不好意思,那請問我該改成什麼呢?
是把 With ActiveSheet 改成 With ThisWorkbook.Sheets(sSheetName)
這樣嗎?謝謝。
你把 ActiveSheet 改掉就可以了。
前面說過,Active 需觸發 Focus ,是全 Windows 的事件,跟 VBA 沒關係。我從 Excel 5.0 就開始寫 VBA ,那時候就這樣,跟 Office 365 沒關係。
狀況是:A活頁簿裡有下面這個VBA的程式碼,開啟運作,然後再開啟B活頁簿,只要在B活頁簿操作任何內容,A活頁簿就整個停住不動。等到我B活頁簿停止操作,如按下enter鍵後,A活頁簿就恢復正常。
A活頁簿裡的VBA程式碼如下:
Sub ButtonStart2() 'bb. 明細工作表開始按鈕
'防止多次啟動
If gbIsRunning1 = True Then
If MsgBox("已有排程:" & gNextRunTime1 & ",是否重新紀錄?", vbOKCancel) = vbOK Then
ButtonStop2
Else
Exit Sub
End If
End If
With ActiveSheet
工作表1.Range("A7:AW600").ClearContents
gbIsRunning1 = True
SetTimer2 .Name
End With
End Sub
Sub ButtonStart21() 'bb. 明細工作表中斷繼續開始紐
'防止多次啟動
If gbIsRunning1 = True Then
If MsgBox("已有排程:" & gNextRunTime1 & ",是否重新紀錄?", vbOKCancel) = vbOK Then
ButtonStop2
Else
Exit Sub
End If
End If
With ActiveSheet
gbIsRunning1 = True
SetTimer2 .Name
End With
End Sub
Sub ButtonStop2(Optional sSheetName As String) 'bb. 明細工作表停止按鈕
gbIsRunning1 = False
On Error Resume Next
'取消下次執行時間
Application.OnTime gNextRunTime1, "'SetTimer2 """ & IIf(sSheetName <> "", sSheetName, ActiveSheet.Name) & """'", , False
On Error GoTo 0
MsgBox (" bb.明細 動作已停止")
End Sub
Sub SetTimer2(sSheetName As String)
Const MAX_ROW = 543
gNextRunTime1 = Now + TimeValue("00:00:10")
Application.OnTime gNextRunTime1, "'SetTimer2 """ & sSheetName & """'"
If mainFunc2(sSheetName) >= MAX_ROW Then ButtonStop2 sSheetName '執行並回傳row
End Sub
Function mainFunc2(sSheetName As String) As Long 'bb.明細工作表記錄部份
With ThisWorkbook.Sheets(sSheetName)
i = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(i, "A") = Format(Time, "Hh:Mm:Ss") 'ROW A,記錄時間
.Cells(i, "B").Resize(, 48).Value = .Cells(6, "B").Resize(, 48).Value 'B6-AW6複製到B7-AW7
End With
mainFunc2 = i '回傳當前列數
End Function
你如果沒有用到 Select / Active 這類公用變數,VBA 仍是各自獨立。
你可以把不正常的地方完整描述出來,或貼出程式碼。
謝謝你的回覆
我對VBA還是個新手,只能照原本的模組來寫
原本在excel 2010版本下,只要各自開啟活頁簿,不要在同一個檔案裡開啟
活頁簿是可以各自獨立,所寫的VBA就不會被其他活頁簿的工作影響
但換來了excel 365版本,不管我怎麼開啟活頁簿,都會變成是同一個來源開啟
所以就像你說的,只要VBA有運作,若在其他活頁簿裡工作,VBA馬上就會停止
所以我困擾的是該如何解決這個問題,讓excel 365版本下的活頁簿可以各自獨立
這樣VBA被影響的情況就不會發生