Excel VBAに関する質問掲示板です。
Excel VBA 質問スレッド No.151 (未解決)
もらったエクセルでvbaが実行されるのに反映されない
投稿者 : tikdom 投稿日時 : 2020/12/25(Fri) 18:03:26 OS : Windows 10 EXCEL : Excel 2016
タイトルの通りです。
以下、vba記述
Dim i As Long
Dim MR As Long
MR = Cells(Rows.Count, 1).end(xlUp).Row
Thisworkbook.Sheets("控除明細書").Range("Q8").Snlect
For i = MR To 8 Step -1
If ActiveCell.Value = "-" And "0" Then
Rows(i).Delete
Else ActiveCell.Offset(1, 0).Select
End If
Next i
どなたか原因教えてください!
ちなみに、他の方が既に作られたエクセルの中にも実行はされるのに結果が反映されないものがありました。
タイトルの通りです。
以下、vba記述
Dim i As Long
Dim MR As Long
MR = Cells(Rows.Count, 1).end(xlUp).Row
Thisworkbook.Sheets("控除明細書").Range("Q8").Snlect
For i = MR To 8 Step -1
If ActiveCell.Value = "-" And "0" Then
Rows(i).Delete
Else ActiveCell.Offset(1, 0).Select
End If
Next i
どなたか原因教えてください!
ちなみに、他の方が既に作られたエクセルの中にも実行はされるのに結果が反映されないものがありました。
[返信 1] Re : もらったエクセルでvbaが実行されるのに反映されない
投稿者 : EUNO 投稿日時 : 2020/12/25(Fri) 20:04:47
いま、Excelの環境がないので、ぱっと見ですが、
> Thisworkbook.Sheets("控除明細書").Range("Q8").Snlect
select のつづりがちがいます?
> If ActiveCell.Value = "-" And "0" Then
ここがおかしいですね。
If ActiveCell.Value = "-" And ActiveCell.avalue= "0" Then
じゃないかな。
いま、Excelの環境がないので、ぱっと見ですが、
> Thisworkbook.Sheets("控除明細書").Range("Q8").Snlect
select のつづりがちがいます?
> If ActiveCell.Value = "-" And "0" Then
ここがおかしいですね。
If ActiveCell.Value = "-" And ActiveCell.avalue= "0" Then
じゃないかな。
[返信 2] Re : もらったエクセルでvbaが実行されるのに反映されない
投稿者 : EUNO 投稿日時 : 2020/12/25(Fri) 23:13:43
> If ActiveCell.Value = "-" And ActiveCell.Value= "0" Then
タイポ失礼、こうですね。0にダブルクオーテーションいるのかどうかは私には分かりませんが。
> If ActiveCell.Value = "-" And ActiveCell.Value= "0" Then
タイポ失礼、こうですね。0にダブルクオーテーションいるのかどうかは私には分かりませんが。
[返信 3] Re : もらったエクセルでvbaが実行されるのに反映されない
投稿者 : tikdom 投稿日時 : 2020/12/29(Tue) 12:12:47
■[質問] tikdomさん(2020-12-25 18:03:26)の記事
> タイトルの通りです。
> 以下、vba記述
> Dim i As Long
> Dim MR As Long
> MR = Cells(Rows.Count, 1).end(xlUp).Row
> Thisworkbook.Sheets("控除明細書").Range("Q8").Select
> For i = MR To 8 Step -1
> If ActiveCell.Value = "-" And ActiveCell.Value = "0_" Then
> Rows(i).Delete
> Else ActiveCell.Offset(1, 0).Select
> End If
> Next i
> どなたか原因教えてください!
> ちなみに、他の方が既に作られたエクセルの中にも実行はされるのに結果が反映されないものがありました。
追記
上記記述、修正しました。
返信くださった方ありがとうございます。
大変申し訳ないのですが、実際には上記の記述をしてあります。
そのうえでエラーでは帰ってこずに結果が反映されないです。
>
調べた所、ブックの共有がされていそうで、もしそうならそれを解除すれば結果が反映されそうなので、休み明けに会社で確認したいと思います。
>
■[質問] tikdomさん(2020-12-25 18:03:26)の記事
> タイトルの通りです。
> 以下、vba記述
> Dim i As Long
> Dim MR As Long
> MR = Cells(Rows.Count, 1).end(xlUp).Row
> Thisworkbook.Sheets("控除明細書").Range("Q8").Select
> For i = MR To 8 Step -1
> If ActiveCell.Value = "-" And ActiveCell.Value = "0_" Then
> Rows(i).Delete
> Else ActiveCell.Offset(1, 0).Select
> End If
> Next i
> どなたか原因教えてください!
> ちなみに、他の方が既に作られたエクセルの中にも実行はされるのに結果が反映されないものがありました。
追記
上記記述、修正しました。
返信くださった方ありがとうございます。
大変申し訳ないのですが、実際には上記の記述をしてあります。
そのうえでエラーでは帰ってこずに結果が反映されないです。
>
調べた所、ブックの共有がされていそうで、もしそうならそれを解除すれば結果が反映されそうなので、休み明けに会社で確認したいと思います。
>
[返信 4] Re : もらったエクセルでvbaが実行されるのに反映されない
投稿者 : EUNO 投稿日時 : 2020/12/29(Tue) 14:14:18
そもそも、activecell.valueで判定を行なって、ループ変数iで削除、
elseの場合はactivecellを移動という処理がイマイチ理解しにくいですね。
分かりやすさからも処理速度からも、selectせずにループ変数だけで処理するのが良いように思います。else節も不要になります。
そもそも、activecell.valueで判定を行なって、ループ変数iで削除、
elseの場合はactivecellを移動という処理がイマイチ理解しにくいですね。
分かりやすさからも処理速度からも、selectせずにループ変数だけで処理するのが良いように思います。else節も不要になります。
[返信 5] Re : もらったエクセルでvbaが実行されるのに反映されない
投稿者 : tikdom 投稿日時 : 2020/12/31(Thu) 14:59:44
■[返信 4] EUNOさん(2020-12-29 14:14:18)の記事
> そもそも、activecell.valueで判定を行なって、ループ変数iで削除、
> elseの場合はactivecellを移動という処理がイマイチ理解しにくいですね。
>
> 分かりやすさからも処理速度からも、selectせずにループ変数だけで処理するのが良いように思います。else節も不要になります。
返信ありがとうございます。
If文の記述が
If Cells("Q" & i).Value = 0 And Cells("Q" & i).Value = "-" Then
Rows(i).Delete
End If
で充分という事でしょうか。
後から見て理解しやすさは私個人としては変わらないと判断してしまってました。
しかし、単純にこちらの方が確かに記述内容も簡潔に感じられるので今後上記のようにしようと思います。
■[返信 4] EUNOさん(2020-12-29 14:14:18)の記事
> そもそも、activecell.valueで判定を行なって、ループ変数iで削除、
> elseの場合はactivecellを移動という処理がイマイチ理解しにくいですね。
>
> 分かりやすさからも処理速度からも、selectせずにループ変数だけで処理するのが良いように思います。else節も不要になります。
返信ありがとうございます。
If文の記述が
If Cells("Q" & i).Value = 0 And Cells("Q" & i).Value = "-" Then
Rows(i).Delete
End If
で充分という事でしょうか。
後から見て理解しやすさは私個人としては変わらないと判断してしまってました。
しかし、単純にこちらの方が確かに記述内容も簡潔に感じられるので今後上記のようにしようと思います。
[返信 6] Re : もらったエクセルでvbaが実行されるのに反映されない
投稿者 : EUNO 投稿日時 : 2021/01/04(Mon) 17:01:16
すみません、よく見てませんでした。
If ActiveCell.Value = "-" And ActiveCell.Value= "0" Then
だとおかしいですね。
If ActiveCell.Value = "-" Or ActiveCell.Value= 0 Then
かな。
すみません、よく見てませんでした。
If ActiveCell.Value = "-" And ActiveCell.Value= "0" Then
だとおかしいですね。
If ActiveCell.Value = "-" Or ActiveCell.Value= 0 Then
かな。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
返信入力フォーム
( 処理日時 : 2021-01-27 11:44:50 )