當下面的宏每 5 分鐘運行一次時,無論我在哪個作業表上作業,它總是會出現/轉移到Sheet2.
我知道.select在我的代碼中可能對此負責,但是有沒有其他方法可以撰寫下面的代碼或任何可以防止轉移并讓自己在作業表上作業的方法。
在 4-5 個作業小時內每 5 分鐘換一張紙是非常令人沮喪的。
我用過(但沒有結果)
Application.ScreenUpdating = False
My macro code here
Application.ScreenUpdating = True
我的宏是做什么的?
它從Pic1的某些單元格中復制資料,并在Sheet1 Pic2中每 5 分鐘將它們粘貼到串列中Sheet2
我的宏代碼
Sub Macro5()
'Code for running it every 5 min
Application.OnTime Now TimeValue("00:05:00"), "Macro5", True
'Go to sheet1
Sheets ("Sheet1").Select
'Select some cell
Range ("A1:D1").Select
'Go down with CTRL ↓
Selection. End (xlDown).Select
'Select 1 cell down using relative reference
ActiveCell.offset (1, 0).Range ("A1").Select
'Come to sheet2
Sheets ("Sheet2").Select
'Select some cells
Range ("I4:L4").Select
'Copy selected cells
Selection.Copy
'Come to sheet1
Sheets ("Sheet1").Select
'Paste that selected value in some cells of sheet 1
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False
End Sub
*宏中可能有一些拼寫錯誤,但請避免,因為原始宏在我的電腦上完美運行
uj5u.com熱心網友回復:
As Sheets ("Sheet2").Select 是您選擇作業表的最后一個命令。它總是會在 Sheet2 結束。
如果您想回傳到您所在的作業表。您應該在開始時將作業表名稱保存在一個變數中。然后最后再次選擇作業表
Sub test()
Dim activeSheetName As String
activeSheetName = ActiveSheet.Name
Sheets("Sheet2").Select
'DO WHAT YOU WANT
Sheets(activeSheetName).Select
End Sub
uj5u.com熱心網友回復:
我對你的代碼有點困惑。
您在 Sheet1 上移動,最終選擇 A 列中的第一個單元格,位于其中的任何資料下方。
然后移動到作業表 2,復制范圍I4:L4,再次選擇作業表 2(已選擇),然后將值和數字格式粘貼到單元格上I4:L4。
您的描述說它將單元格I4:L4從作業表 1 復制到作業表 2 的資料底部。
Sub Macro5()
'Code for running it every 5 min
Application.OnTime Now TimeValue("00:05:00"), "Macro5", True
'ThisWorkbook is the file that the code is in.
ThisWorkbook.Worksheets("Sheet1").Range("I4:L4").Copy
'Each reference starting with a . will reference ThisWorkbook.Worksheets("Sheet1")
With ThisWorkbook.Worksheets("Sheet2")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlPasteValuesAndNumberFormats
End With
End Sub
如果作業表為空,我已經使用End(xlUp)as可以跳轉到作業表的末尾。End(xlDown)
也值得一讀how-to-avoid-using-select-in-excel-vba
uj5u.com熱心網友回復:
您可以將作業表稱為變數,而不是使用易受用戶中斷影響的 select。這種方式運行速度更快,并且您可以確定隨時使用哪個作業表。通過使用 select,您可能會在代碼中的任何給定點忘記哪個作業表處于活動狀態。
Sub test()
Dim Sheet1 As Worksheet
Dim Sheet2 As Worksheet
Set Sheet1 = Sheets("Sheet1")
Set Sheet2 = Sheets("Sheet2")
Sheet1.Range("A1:D1").Copy Sheet2.Range("A1")
End Sub
使用這種方法,您可以在任何您想要的作業表上,并且代碼將更新到另一個作業表,但將進行更改
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/484142.html
下一篇:更正選定的范圍
