プチIT化

【Excel】セル左上の緑色の三角の対処法とVBAマクロサンプル

こんにちは、わたあめです。Excelでデータをコピーして貼り付けると、セルの左上に緑色の▼が付くことってないですか?!

セルの左上に緑の三角で、フォーカスすると以下のメッセージが表示されます。

数値が文字列として保存されています

今回は、この「数値が文字列として保存されている」メッセージを手動で直していく方法と、マクロで対応する方法を記載していきます!それでは、行ってみましょう。

手動でメッセージを解消する方法

数値に変換する

メッセージの通り、Excelが数値なのに文字列として認識しちゃってるけど良いよね?という確認なので、メッセージの案内にある「数値に変換する」をクリックすることで、数値に変換することが出来ます。手順は以下です。

  1. 左上に緑色の三角があるセルを選択
  2. [!]の隣の[▼]をクリックしてメニューを出す
  3. [数値に変換する]をクリック

これで、緑色の三角は消えるかと思います。

区切り位置ウィザード

次は、データメニューにある区切り位置ウィザードを利用する方法です。範囲を選択して区切り位置ウィザードを使うと緑色の三角が消えました。(この方法もウィザードを通すことで数値に変換されているのだと思います。)

前章はセルをひとつずつ数値に変換していましたが、ウィザードを使えば範囲選択できるので、まとめて一括で設定することが出来ます。手順は以下です。

  1. 範囲を選択する
  2. [データ]タブ>[区切り位置]をクリック
  3. 区切り位置区切り位置指定ウィザード(1/3)~(1/3)で[次へ]ボタンをクリック>[完了]をクリック

これでOKです!

ダブルクリック後、他のセルを選択

緑色の三角が出ているセルをダブルクリックして、編集モードにした後、他のセルを選択しても消えました!これは何の現象なのか分かりませんが、解消できた一例として記載しておきます。

そもそも、数値が文字列として扱われても構わないよ!という方は後章の「」にこのエラーチェックの設定解除方法をのせていますので、見てみてください。

マクロでメッセージを解消する方法

これまでは、Excel操作で手動でメッセージを解消する方法を記載していました。が、マクロでデータをコピー&ペーストしてきてこのメッセージが出ることもありますよね。処理の中で張り付けてきたデータが文字列として扱われるとマズいというケースありますよね。

この章では、エクセルマクロ(VBA)で、セルの左上につく緑色の (エラー)を消すマクロサンプルを紹介していきたいと思います。

これから紹介するマクロはシート名やセルの範囲など適宜書き換えてお使いください。実行等は自己責任でお願いいたします。

エラーオプションを無視するマクロサンプル

数値が文字列として扱われています!というエラーチェックメッセージを無視するマクロサンプルです。

' 作業シートをアクティブ
Worksheets("シート名").Activate

' 最終行数を取得
maxRow = Worksheets("シート名").Range("A1").End(xlDown).Row

' 範囲を選択
ThisWorkbook.Worksheets("シート名").Range("A1:A" & maxRow).Select

' 範囲のエラーチェックを無視する
For Each cRange In ActiveSheet.UsedRange
  cRange.Errors(xlNumberAsText).Ignore = True
Next

メッセージの出ている列がA列(A1~A100)とかを想定して記載しています。範囲を選択した後For分を使って範囲のメッセージの無視(Ignore=True)する設定にしています。この時、エラーメッセージがあるかどうか?を判定せず、範囲内のものは無視という動きになっています。

数値に変換するマクロサンプル

エラー自体を無視するという動きではなく、文字列を数値に変換することで根本的な解決を図るマクロサンプルです。

' 最終行値を取得
maxRow = Worksheets("シート名").Range("A1").End(xlDown).Row

' 数値に変換
For i = 0 To maxRow
  Range("A" & i + 1).Value = Val(Range("A" & i + 1).Value)
Next

Val関数で数値に変換するという単純なマクロになりますが、数値に変換することでエラーとならないので、緑色の三角も消えます。

エラーメッセージを無視するだけでは、文字列としての処理になるので比較(例えば100以上という条件に引っ掛からなかったり)が上手くいかない場合があります。数値でなくては出来ない処理が結構あると思うので、根本解決しておく方がオススメです。

popIn Aladdin

エラーチェックルールの設定を解除する

そもそも、数値が文字列として扱われていたって問題ないんだけど?!という方もいるかもしれません。そういう時は、エラーチェックを行わない設定をするという手もあります。ただ、エラーチェックあった方が間違いに気づきやすいので、個人的には設定はそのままが良いかなと思っています。

エラーチェックのルールから、今回の事例を外します。チェックするルールの観点に数値が文字列として保存されているかどうかをチェックしないという設定を入れます。

  1. [ファイル]>[オプション]をクリック
  2. [数式]をクリック
  3. [エラーチェックルール]欄>[文字列形式の数値、またはアポストロフィで始まる数値]のチェックを外す

これで、同じ状況になっても緑の三角は出なくなります。

さいごに

いかがだったでしょうか!今回の記事が皆様のお役に少しでも立てれば幸いです。それでは、また!

flier(フライヤー)