Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Excel 2013)
Z列に作動しない
投稿日時: 20/10/10 11:47:55
投稿者: ふわ

初めまして。
O列とZ列の90以上の数値に丸を付けたいのですが、以下の作成したマクロではO列のみに反応し、
Z列に丸が付きません。
Y列を非表示にしていることが関係しているのでしょうか?どなたかご教授下さい。
Sub 丸付けマクロ()
    Dim Rng As Range
    For Each Rng In Union(Range("O13:O24"), Range("O31"), Range("Z13:Z24"), Range("Z31"))
        If Rng.Value >= Range("A1").Value Then
            With ActiveSheet
                .Shapes("円/楕円 1").Copy
                .Paste Destination:=Rng
            End With
        End If
    Next Rng
 End Sub

回答
投稿日時: 20/10/10 12:13:18
投稿者: simple

再現しませんね。
何かの手違いじゃないですか?
 
ステップ実行して、Z列のセルについて
・IFの条件(大小比較)を満たしているか
・コピー処理を実施するコード行を実際に通っているか、その時、図形がコピーされているかどうか
を確認して下さい。

投稿日時: 20/10/10 14:09:15
投稿者: ふわ

お返事頂きありがとうございます。
Z列に式が入っているのが原因なのでしょうか?
 

回答
投稿日時: 20/10/10 14:13:31
投稿者: simple

式が入っていても、
その計算結果とA1セルとの比較の結果が
どうなっているかです。
ステップ実行の意味は分かりますか?

投稿日時: 20/10/10 14:20:57
投稿者: ふわ

恥ずかしながら勉強して日が浅く、しっかり理解できていないかもしれません。
F8キーを押しながら一行ずつ確認していくという理解でよろしいでしょうか?

回答
投稿日時: 20/10/10 14:40:35
投稿者: simple

そうです。
今のままだと延々とO列が続くので、
さきにZ列を処理するようにするといいかも。
黄色いマーカが次実行する行ですから、
まずは条件判定がどうなっているか?
次にコピーペイストに問題無いか確認してください。

回答
投稿日時: 20/10/10 21:44:17
投稿者: バチバッチ

そこまでコード見てなくて言うのもあれですけど
わけて試してみるとかでがんばってください
アドバイスできなくてすいません。
 
Sub 丸付けマクロ()
    Dim Rng As Range
    For Each Rng In Union(Range("O13:O24"), Range("O31"))
        If Rng.Value >= Range("A1").Value Then
            With ActiveSheet
                .Shapes("円/楕円 1").Copy
                .Paste Destination:=Rng
            End With
        End If
    Next Rng
 
    For Each Rng In Union( Range("Z13:Z24"), Range("Z31"))
        If Rng.Value >= Range("A1").Value Then
            With ActiveSheet
                .Shapes("円/楕円 1").Copy
                .Paste Destination:=Rng
            End With
        End If
    Next Rng
 End Sub

回答
投稿日時: 20/10/11 08:25:32
投稿者: simple

ふわさんへ。
 
マルチポストして他で解決(*)したのですから、
その旨をきちんとコメントして閉じるべきです。
オープンにしたままだと、継続してトライする回答者の行動は無益に帰します。
最低限のマナーを守って下さい。
(事後的に見てみたら、他の掲示板でも同じ話をされ、
  実際に動かしたコードを示してください、というコメントに応えず、
  そのまま放置していたり、掲示板利用に関するマナーが悪いですね。
  少し考えていただきたいですね。)
 
こうしたデバッグ案件は、ご自分でまずはきちんとトライすべきです。
そのうえで改善しないなら、状況をきちんと説明すべきです。
何と何を比較して、こうなるはずだが、実際こうなってしまう、という説明です。
思い通りにいかない原因の追及を、データを何も持たない他人に依存しても埒が明きません。
こちらは千里眼であなたのPCが見られる状況でもありませんから、
ピンポイントの回答が得られる訳がありません。
 
デバッグ手法に不案内なら、この際、きちんとマスターして下さい。
一発でコードが思い通りに動くということはなかなか無いことです。
デバッグ(間違いの修正)は、コードを書くことと同等に重要な作業です。
ステップ実行のしかた、変数の中身の確認の仕方(イミディエイトウインドウや
ローカルウインドウの利用方法等)などをマスターされることをお薦めします。
 
(*)%付きで表示された数値(実際は1以下の数値)と、整数(0〜100)を比較していた由。

トピックに返信