• ベストアンサー

エクセルマクロ 選択したセル範囲の中で空""のセルに'を入れる

エクセルは長年使っていたのですが、 マクロも使いたいと思いネットで色々調べています。 やりたいことは、 選択したセル範囲の中で空""のセルに'を入れる マクロを作りたいのですが、 どうしたら良いのでしょうか? マクロ以外の方法もあれば教えて欲しいのですが、 この機会にマクロに挑戦しようと思いました。 宜しくお願いいたします。 今作成している途中のマクロはこんな感じですが 上手く動きません Sub NullCellAddDash () Dim cellrange As Range For Each cellrange In Selection.Cells If cellrange = "" Then cellrange = "'" End If Next End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.3

もしかして数式かなにかでエラーして、#VALUE!ってなっているセルを含んでいませんか? そういうセルは文字列として比較ができないため、エラーとなってしまいます。 エラーが起こったとき、デバッグボタンを押して、cellrangeにマウスカーソルを近づけたときに"エラー XXXX"とかって表示されていたら、比較ができないからエラーしていると考えられます。 回避するにはFor Each...の前に、 On Error Resume Next って入れてやってみてください。 エラーが起こったらスキップするって意味です。

yangnob3
質問者

お礼

完璧です!!! まさにその通りで、修正したら上手く行きました。 さらに質問させてもらっていいですか? >cellrangeにマウスカーソルを近づけたときに"エラー XXXX"とかって表示されていたら Macだからなのかも知れませんが、エラーが起きたらメッセージボックスが 出てきてそこにエラーXXって出てきました。 デバックボタンを押すとマクロの行の途中がハイライトされるだけです。 もう一つ マクロが終了したというのはどうやって判断するんですか? プログラムでマクロが終了したという表示をさせること出来ますか?

その他の回答 (3)

  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.4

>Macだからなのかも知れませんが、エラーが起きたらメッセージボックスが >出てきてそこにエラーXXって出てきました。 >デバックボタンを押すとマクロの行の途中がハイライトされるだけです。 それで正常だと思います。下記が参考になるでしょう。 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030_03.html http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_140_02.html >プログラムでマクロが終了したという表示をさせること出来ますか? この場合、End Subの前に msgbox "終了" って入れるだけです。2つ目のURLを参考にすれば、 どのセルを処理中にエラーしたかなども調べることができるでしょう。

yangnob3
質問者

お礼

本当にありがとうございます。 とても勉強になりました。

  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.2

動いているように思えるのですが・・・ どううまく動かないのでしょうか? 'を画面に表示させたいなら、"''"を入力しないといけないと 表示されませんよ。 1文字目の'は文字列を表す記号として扱われるはずで、 画面には表示されてこないと思います。

yangnob3
質問者

お礼

ありがとうございます。 選択範囲を小さくするとうまくいくことが多いのですが、 大きく選択すると、型が違いますとエラーが出ることもあります。 マクロに間違いがなければ使い方の問題だと思います。 ありがとうございました。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

セルにダッシュを表示させたい場合は以下になります。 cellrange = "''" ダッシュ1つでは後続する値が文字列であることを表す特殊な 記号になりますので上記のような表現になります。

yangnob3
質問者

お礼

もともとはセルを参照すると、空欄なはずなのに "0"と表示されてしまうのが嫌だったのです。 IFを使えば出来ますが、 もっとスマートな方法はないかと考えていました。 ありがとうございます。

関連するQ&A