我意識到我無法複製和粘貼任何東西,因爲我的宏存儲其他東西或清除我的剪貼板。運行宏影響複製/粘貼(剪貼板)
我的宏與我的機器上的其他任務和應用程序「交互」,並不奇怪,就像關閉num-lock;這是SendKeys
的結果,您可以閱讀關於它here和thread。或者正如我所說的那樣,它會影響我的剪貼板或關閉Adobe Acrobat,或者如果我沒有重啓機器一段時間,就停在代碼中間。我認爲這是正常的,因爲它吸收了大量的內存,並且超出了我正在打印的PDF格式,或者編輯導致「複雜格式化」的警告錯誤的圖表,這些錯誤無法通過Application.DisplayAlerts = False
或甚至SendKeys {Enter}
來處理。
除了所有這些,我需要在宏運行時編輯報表,以及在運行時無法複製/粘貼的事實難以忍受。值得一提的是我需要複製一個範圍並粘貼它(不能將範圍分配給另一個範圍),所以我在我的代碼中複製/粘貼。我不確定究竟是什麼導致了這一點,所以只是說在我的代碼中Application.CutCopyMode
設置爲False
。
編輯:這是一個過濾器和數據移動到新的工作表的一部分:
Sub Data_Filter(ic As Integer, sDate As Date, eDate As Date)
'Needs setup
ap.CutCopyMode = False
cr1 = ">=" & sDate
cr2 = "<=" & eDate
wsh.Range("$A$2:$AZ$315746").AutoFilter
wsh.Range("$A$2:$AZ$315746").AutoFilter Field:=1, Criteria1:= _
cr1, Operator:=xlAnd, Criteria2:=cr2
wsh.Range("$A$2:$AZ$315746").AutoFilter Field:=ic, Criteria1:="<>-"
wsh.Range(wsh.Cells(1, 1), wsh.Cells(1, 2).End(xlDown)).Copy
wsh1.Activate
wsh1.Range("A1").PasteSpecial xlPasteAll
For xx = 0 To 2
wsh.Activate
wsh.Range(wsh.Cells(1, ic + xx), wsh.Cells(1, ic + xx).End(xlDown)).Copy
Select Case wsh.Cells(2, ic + xx).Value
Case "Flow (MGD)"
ix = 1
Case "Depth (in)"
ix = 2
Case "Velocity (fps)"
ix = 3
End Select
wsh1.Activate
wsh1.Cells(1, 2 + ix).PasteSpecial xlPasteAll
Next xx
wsh.ShowAllData
wsh.Range("$A$2:$AZ$315745").AutoFilter
End Sub
問題:我認爲問題是由拷貝將被保存在我的剪貼板該範圍內造成記憶。糾正我,如果我錯了。有沒有辦法解決這個問題,比如將複製的範圍存儲在其他地方而不是剪貼板內存中,以便我可以繼續在我的機器上工作?
p.s.我很清楚選擇/激活的缺點。
爲什麼你必須複製/粘貼並且不能直接將數據/內容/格式寫入目標單元格/範圍?在這裏發佈代碼,也許我們可以幫助您重寫代碼,避免使用複製/粘貼? – Ralph
@Ralph我正在過濾我的表格,出於某種原因,當我複製/粘貼時,我沒有在目標表單中獲取過濾的值,但是直接寫入時,它最終忽略了過濾器。 – Masoud
然後複製「可見單元格」。你的問題很不清楚/很難回答,因爲有很多事情可以「重置」剪貼板,而且你沒有向我們展示任何東西。一般的經驗法則,如果你需要複製+粘貼東西,在你複製之後立即粘貼*不要去打開工作簿或者做其他20件事:一旦你複製了你想要的東西,接下來要做的事情是粘貼它。這就是說我不知道這與你的問題有什麼關係。請[edit]澄清。接近1K代表似乎你現在應該知道這些事情。 –