EXCEL/VBAで質問です。Rangeを引いてきてForにて行を取得しているのですが
表示するだけの場合とカットペーストする場合で挙動が異なって困っています。
色々と確認してみましたがお手上げです。
どの様にすれば意図する様に全ての行で処理が行える様になるのかご教示のほど
お願いいたします。
'フォーム側の処理 Private Sub DeleteButton_Click() '選択している行番号を取得 Call ExportText.DeleteDataMove(Selection.Rows) End Sub '処理モジュール Function DeleteDataMove(DeleteRow As Range) As Boolean On Error GoTo Error_Sub Dim TargetSheet As Worksheet Dim MoveTargetSheet As Worksheet Dim i As Long Dim MoveFirstRow As Long Dim j As Long Dim s As Range Set TargetSheet = ThisWorkbook.Sheets(1) Set MoveTargetSheet = ThisWorkbook.Sheets(2) MoveFirstRow = MoveTargetSheet.Cells(Rows.Count, 1).End(xlUp).Row i = MoveFirstRow + 1 TargetSheet.Unprotect For Each s In DeleteRow.Rows Debug.Print "移動対象行:" & s.Row Next s For Each s In DeleteRow.Rows Debug.Print "カット対象:" & s.Row TargetSheet.Activate TargetSheet.Rows(s.Row).Select Selection.Cut MoveTargetSheet.Activate MoveTargetSheet.Rows(i).Select ActiveSheet.Paste i = i + 1 Next s TargetSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True DeleteDataMove = True Exit Function Error_Sub: MsgBox ("[ 例外 ] " & Err.Number & ":" & Err.Description) DeleteDataMove = False End Function
上側のfor文の様に行表示のみであれば正常に動作するのですが、下側のfor文の様に
カットペーストを加えると先頭から2番目の行が処理されずに欠落してしまいます。
下記のログのような感じになってしまいます。やっていることはまったく同じです。
移動対象行:92 移動対象行:93 ←ここが処理されずに飛んでしまう。 移動対象行:94 移動対象行:95 カット対象:92 カット対象:94 カット対象:95

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/09 09:08