このコードは少し複雑ですが、問題は2回目と3回目に実行され、情報を取得する「Base434」ワークシートの列が失われ始めます。私は "Range(" A1 ")を追加する簡単な修正を試みました。以前に強調表示されたものはそれを投げ捨てることはできませんでしたが、列" T "である20番目の行を切り捨てるようにします。Excel VBA動的コード繰り返し失敗
本質的に、このコードは、「Base434」という名前のインポートされたワークシートのセットフィールドをソートし、特定のフィールドを別の埋め込み式を持つ別のページにコピーして確認しますワークシート "NoStdHC"が存在する場合は、ワークシートを作成してヘッダーを追加し、 "Base434"というフィルタを適用したワークシートに移動し、そのワークシート内のすべての可視セルをコピーします。 "NoStdHC"の列Aの使用可能なセル。私の問題は、インポートされた次の "Base434"シートの最後の列をコピーすることを拒否すると、これを実行した後です。 de?はい、私はコーディングがうまくいけば、これが凝縮される可能性があることはよく知っていますが、コードが何をしているのかを理解することが望ましいでしょう。
Sub NoStdHC()
'
' NoStdHC Macro created by
'
'
Application.ScreenUpdating = False
Sheets("Base434").Select
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
ActiveSheet.Range("A1:T" & LastRow).AutoFilter Field:=15
ActiveSheet.Range("A1:T" & LastRow).AutoFilter Field:=10
ActiveSheet.Range("A1:T" & LastRow).AutoFilter Field:=10, Criteria1:="<=.5", _
Operator:=xlAnd
Columns(11).Cells.SpecialCells(xlCellTypeVisible).Cells(2).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Processing").Select
Range("AC1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C5").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=COUNTA(C[26])"
Range("e5").Select
ActiveCell.FormulaR1C1 = "=SUM(C[24])"
Range("C8").Select
Sheets("Base434").Select
Dim wsTest As Worksheet
Const strSheetName As String = "PR0OnStd"
Set wsTest = Nothing
On Error Resume Next
Set wsTest = ActiveWorkbook.Worksheets(strSheetName)
On Error GoTo 0
If wsTest Is Nothing Then
Worksheets.Add.Name = strSheetName
Sheets("Base434").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("PR0OnStd").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Columns.AutoFit
Range("A2").Select
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
End If
Sheets("Base434").Select
Range("a1").Select
Columns(1).Cells.SpecialCells(xlCellTypeVisible).Cells(2).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("PR0OnStd").Select
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
Range("A" & LastRow).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.ScreenUpdating = True
End Sub'
奇数振る舞いはとても広く( '選択/有効化/ ActiveCell'と修飾されていない範囲を使用するときに発生する可能性が非常に高いです! )。 [Excel VBAでの選択の回避方法](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) –
これを読むと適用することを強くお勧めしますまさに私の問題です。リンクをありがとう、私は選択を避ける方法を知っている。 –