環境:エクセル2010
ワークブック内の特定シートの特定セル範囲において、
"-"ハイフン表示になっているセルをemptyにするVBAコードを確認したいです
この際、セルの表示は、"-"ですが、別シートを参照しているので、
=sheet2!E4 などになっています
よろしくお願いします
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ワークブック内の特定シートの特定セル範囲において、
"-"ハイフン表示になっているセルをemptyにするVBAコードを確認したいです
上記のような説明で、
他人(エクセル君も含む)に仕事を頼んで、
ちゃんと希望した結果を返してくれるかよく考えてみましょう。
仕事を頼むときは、
「○○の××を□□して下さい。」と頼まないとトンチンカンな結果が返ってくる可能性が大だと思います。
なので今回の質問の件では、
「どのブック(絶対一つしかブックを開いてないのであれば省略可)の
どのシートのどのセル範囲の内、「-(ハイホン)」の値を表示している
セルの数式をクリアしたい。」
と書くべきではないでしょうか。
それから、いま、表示されている値は「-」以外は全部数値でしょうか?
また、セルの書式設定で「-」を表示していて、ホントの値は別という可能性はないでしょうか?
条件によっては、エクセルの機能で仕事を処理できます。
(手動こなすか、VBAで命令文を書いて自動でやってもらうかは別の話しです。)
回答者には、あなたのパソコンが覗けないのですから、
これくらいの説明は書かないと、あなたの意図が正確に伝わらないと思いますよ。
それから、プログラムには、作業の手順を書いていって、
それをエクセル君に自動で作業してもらうことになります。
つまり、まずは日本語でその作業の手順を説明できるようになり、
その作業手順書をエクセル君が分かるVBA語に翻訳して、自動実行してもらえるようになります。
VBAコードを確認したいです
要はマクロを作ってくれってことですよね?
それを見て、傾向を把握し対策をできるということですかね?
それよりもどうやったら、結果が得られるかの手順を確立することが大事です。
今回の件の場合は(僕の解釈があっていればですが。。。。)、
0)作業始め
1)マクロを書いておくブックの「Sheet1」(説明がないので仮にSheet1とします。)の
「E10:J100」の各セルを順にみていく。
2)もし、各セルの値が「-(ハイホン)」だったら、そのセルの数式をクリア
3)次のセルを見る(1へ戻る)
4)全てのセルを見たら作業終わり
という作業手順になると思いますが、いかがでしょうか?
(こういう風に書いておけば、だれが作業しても同じ結果が得られると思いませんか?
プログラムにはこういうことを書いていきます。)
ここで、順次見て行くセル範囲の値が、「-」以外は全部「数値」ならば、
エクセルのジャンプ機能を使って、値が「文字」のセルを一括で検索し、選択してくれます。
この機能を使えるならば、
範囲内の個々のセルをいちいち確認するよう命令をしなくてもよいようになります。
(つまり、各セルを順次みていく指示の替わりに、この機能を呼び出す指示を書けばよいわけです。)
まずは、この辺の情報を整理して他人に伝えるところから始めてみてはいかがでしょうか?
時間がないので手取りばやく、必要最小限の情報を得たい気持ちはわからなくもないですが、
それではいつまでたっても、自分でマクロを書くことは難しいかなと思いますので、
いろんな方と何回かやりとりをしていきながら、VBAとかマクロの「理解」を深めていただきたいなと
思います。
投稿2019/02/16 11:38
編集2019/02/16 11:42総合スコア2136
0
ベストアンサー
セルの指定方法を触れられていませんが、とりあえず選択しているセル範囲とするならばSelection
。
対象のセルの内容そのものを空にしたいならば、セル参照かどうかにかかわらずClearContents
で構わないでしょう。
セル参照の設定(式)はそのままに参照先を空にしたいならば、参照式(の=
を除く意味で2文字目以降)をRange
の引数にしてClearContents
メソッドでしょうか。同じシートならPrecedents
でよいのですが。
ただし、この場合は、参照式が入ったセルは空欄ではなく0
が表示されることになると思いますので、それは別に対応が必要になります。
というわけで、これらを使った例です。
VBA
1'選択中のセル毎にループ 2For Each tgt In Selection 3 '消去するセル値か判定 4 If tgt.Value2 = "-" Then 5 'セルが式か(式の場合はセル参照のみであるものとする) 6 If tgt.HasFormula Then 7 '参照先のセルを空にする 8 Range(Mid(tgt.Formula, 2, 255)).ClearContents 9 Else 10 'セルを空にする 11 tgt.ClearContents 12 End If 13 End If 14Next
投稿2019/02/15 17:51
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/02/16 03:41
2019/02/16 11:21
退会済みユーザー
2019/02/16 16:22
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。