私はマクロを書いた経験があまりないので、次の問題が発生した場合はこのコミュニティの助けが必要です:
私のマクロは、1 つのワークシートの縦方向の範囲に入力された値の範囲をコピーし、別のワークシートに値を横方向 (転置) に貼り付けます。理論的には、最初のシートの値を、内容のない 2 番目のワークシートの最初の行に貼り付けます。最初の 5 行にはコンテンツがあるため、値を 6 行目に貼り付けます。マクロの実行に関して私が抱えている問題は、マクロが遅すぎると感じているため、より速く実行したいということです。
同じことを行う同じマクロがありますが、代わりに値を別のワークシートの最初の行に貼り付け、完全に実行されます。
したがって、2 番目のマクロは 6 行目から貼り付けを開始する必要があり、最初の 5 行にはマクロの実行に時間がかかるコンテンツが含まれている可能性があるため、実行速度が遅いと推測されます (多くの他のワークブックへのセル参照) を使用して、貼り付ける次の行の場所を決定します。それは私の最善の推測ですが、私はマクロについてほとんど何も知らないので、何が問題なのかはっきりとは言えません.
ここに私のマクロのコードを提供します。誰かが私のマクロを遅くしている原因を教えて、それをより速く実行する方法についての解決策を提供してくれることを心から願っています. 解決策は、マクロがデータの最初の 5 行を考慮せず、最初のエントリの 6 行目にすぐに貼り付けを開始することである可能性があると考えています。次回は7行目など。これは解決策かもしれませんが、それを行う方法でコードを書く方法がわかりません。
時間を割いて解決策を見つけるのを手伝ってくれてありがとう、コードは次のとおりです。
Sub Macro1()
Application.ScreenUpdating = False
Dim historyWks As Worksheet
Dim inputWks As Worksheet
Dim nextRow As Long
Dim oCol As Long
Dim myCopy As Range
Dim myTest As Range
Dim lRsp As Long
Set inputWks = wksPartsDataEntry
Set historyWks = Sheet11
'cells to copy from Input sheet - some contain formulas
Set myCopy = inputWks.Range("OrderEntry2")
With historyWks
nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
End With
With inputWks
Set myTest = myCopy.Offset(0, 2)
If Application.Count(myTest) > 0 Then
MsgBox "Please fill in all the cells!"
Exit Sub
End If
End With
With historyWks
With .Cells(nextRow, "A")
.Value = Now
.NumberFormat = "mm/dd/yyyy hh:mm:ss"
End With
.Cells(nextRow, "B").Value = Application.UserName
oCol = 3
myCopy.Copy
.Cells(nextRow, 3).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
End With
'clear input cells that contain constants
With inputWks
On Error Resume Next
With myCopy.Cells.SpecialCells(xlCellTypeConstants)
.ClearContents
Application.GoTo .Cells(1) ', Scroll:=True
End With
On Error GoTo 0
End With
Application.ScreenUpdating = True
End Sub