- 締切済み
マクロで自動チェックをしたい
EXCELで業務上、表を作成します。チェックを目検でしているのですが、マクロでできないものかと思い投稿しました。 (1)特定の列の数字がすべて小数点1桁であること。 (2)特定の文字列が右寄せになっていること。 (3)フォントサイズが11であること。 (4)指定範囲に縦罫線・横罫線がすべてに引けていること (5)指定範囲内のセルで「###」となって文字が表示されていない箇所があるか。 このようなことを、マクロを作ってチェックができないものかと考えています。 ただ、マクロを作成するスキルがないので、サンプルマクロを教えていただけるとありがたいです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- papayuka
- ベストアンサー率45% (1388/3066)
#2です。 セルの書式設定だけでデータを弄っている訳じゃないと思いますが?? 単純に小数点1桁と言っても、データがそうなのか、見た目がそうなのかは別の問題です。 100.0 と入力しても 100 ですし、100.545 も書式次第では 100.5 にも 101 にもなります。 特定の書式設定になっているか否かを判断する程度なら、、、 Sub Test() Dim r As Range For Each r In Selection If IsNumeric(r.Value) Then If r.NumberFormat = "#,##0.0;[Red]-#,##0.0" Then MsgBox r.Address & " : OK" Else MsgBox r.Address & " : NG " & r.NumberFormat End If End If Next r End Sub
- papayuka
- ベストアンサー率45% (1388/3066)
> (1)特定の列の数字がすべて小数点1桁であること。 発想を変えてチェックではなく小数点1桁にしてやれば良いと思うのですが如何でしょう? 範囲を選択してからマクロ記録で小数点表示桁上げボタンを押下する動作を記録すると Sub Macro1() Selection.NumberFormatLocal = "#,##0.0;[赤]-#,##0.0" End Sub となりました。 これだけでも汎用性はあると思います。 他も同様ですね。
- NCU
- ベストアンサー率10% (32/318)
どこが難しいのでしょう。 そのまま記述するだけです。 具体的にわからないところがあればご質問下さい。
補足
すいません。わからないことだらけで・・・。 チェックをするということで(1)~(5)になるように設定するというのはしないという前提で文章で書いてみると (1)指定範囲の数字から小数点の桁数を取得する。取得した桁数が1でなければ、そのセルの番地を表示 (2)指定した範囲で文字列がどっち寄せになっているかを確認。右以外があれば、そのセル番地を取得しエラーで表示。 (3)以降も同じような感じかと思います。 わからないこととしては、値の取得方法と複数範囲なので判別式をループさせないといけないと思うのですが、させ方がわかりません。
お礼
回答ありがとうございます。 確かにすべてを小数点に変えればよいだけの話なのですが、 できれば出来上がったデータをあまりいじりたくないのです。。。 なので、チェックロジックでできないものかと考えました。 もしくは、表示されている数字が小数点何桁かを数えるだけでもいいのですが。