[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コンパイルエラー:変数が定義されていません』(トット)
[コンパイルエラー:変数が定義されていません・・・?]
以前質問させていただいた回答に沿ってやってみたのですが、
下のVBAをコピーして貼り付けすると「xlnon]のところが青くなって
「コンパイルエラー変数が定義されていません」が
出てきます。
どうゆうふうに解除したらよいのでしょうか?
A列に数値を入れたときに数値によってフォント色が変わります。
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim colr As Integer
If Target.Count > 1 Then Exit Sub If Target.Column <> 1 Then Exit Sub Select Case Target Case Is <= 10 colr = 3 'ここの色番号をお好きなように Case Is <= 20 colr = 4 '々 Case Is <= 30 colr = 5 '々 Case Is <= 40 colr = 6 '々 Case Is <= 50 colr = 7 '々 Case Is <= 60 colr = 8 '々 Case Is <= 70 colr = 9 '々 Case Is <= 80 colr = 22 '々 Case Is <= 90 colr = 43 '々 Case Is <= 100 colr = 29 '々 Case Else Target.Offset(0, 0).Font.ColorIndex = xlnon Exit Sub End Select
Target.Offset(0, 0).Font.ColorIndex = colr
End Sub
Target.Offset(0, 0).Font.ColorIndex = xlnon Target.Offset(0, 0).Font.ColorIndex = colr 上記ふたつのOffsetは必要ないので抜いてみてください。 Target.Font.ColorIndex = xlnon Target.Font.ColorIndex = colr (川野鮎太郎)
エラーメッセージに従って、変数を宣言すればよいのでは?
(INA)
衝突しました・・。
※それからどこに貼り付けましたか? 標準モジュールではなく、該当シートのシートモジュールに貼り付けてください。 (川野鮎太郎)
Option Explicit が記述してあり、 Target.Font.ColorIndex = xlnon だと、該当エラー表示になります。 近い組み込み定数は xlNone ではないかと思いますが、 フォントに xlNone (色無し)は設定できないので、これもエラー。 自動なら xlAutomatic 白なら 2 黒なら 1 (みやほりん) 【余談】 [[20040918124028]] 『色分け』(ヨッシー) 元スレはInteriorオブジェクトのColorIndexだから、 xlnon 未定義の変数、代入無し = Empty 結果は 0 を代入した時と同じになります。 だから、問題なく動いていたのだと推測。 元スレでは、xlNone を指定すべきところでしたね、 (みやほりん)
変数の定義で Dim colr As xlnon でも 値が0になるので結果としては自動になるようですね。 (川野鮎太郎)
えーっと、 Dim colr As xlnon では、「変数colrをxlnonというユーザー定義型変数として宣言する」 ということになるのでTypeステートメントで作成しないと ・・・コンパイルエラー・・・ もし変数xlnonとして使うなら、 Dim xlnon As Integer '(またはLong型) もしくは定数として Const xlnon As Integer = 0 を追加ではないかと・・・・。 (みやほりん)
あちゃ・・・ おっしゃるとおりです。 まったく何を書いたんだか・・・。すいませんでした。 (川野鮎太郎)
いえいえ、恐縮なさらずに。 でも要は、 「Option Explicitの記述があるのならそれを削除、またはコメント化」 がいちばん簡単ではないかと。 ただ、最初にこれを書いちゃうと xlnon を組込定数として 覚える人が出てきちゃって、あとあと問題ありかな〜と思いまして。 かってにまとめます。 【1】参考にしたスレッドの誤記 Target.Interior.ColorIndex = xlnon xlnon は xlNone が正しい。 そのため xlnon をVBAでは「未定義の変数」と扱う。 xlnon には値代入がなされていないので、実行中はEmptyのまま。 実行上問題がなかったのは初期値Emptyが 0 として扱われたため。 Target.Interior.ColorIndex = 0 とした場合と同じ。 xlNone と 数値 0 は等しくありませんが、 ColorIndexプロパティが両方とも「塗りつぶし無し」の設定として許容。 【2】Option Explicit エラーメッセージから相談者の(トット)さんのモジュールには Option Explicitが記述されていると推測されます。 今回の問題はOption Explicitをモジュールから削除する ことで解決すると思われます。 が、「未定義の変数」xlnonがそのままなので、 Target.Font.ColorIndex = 0 または Target.Font.ColorIndex = xlAutomatic と書き換えるべきでしょう。 【3】Interior と Font のColorIndex定数の違い セル背景色「塗りつぶし無し」 Target.Interior.ColorIndex = xlNone 'または xlColorIndexNone フォント色「自動」 Target.Font.ColorIndex = xlAutomatic 'または xlColorIndexAutomatic 同じ規定値に戻す動作でも組込定数が違う。 (みやほりん)
あれまぁ、このマクロの原型はあの「ヤ」の付く男が作ったヤツでっしゃろ? せやから鮎さんには責任おまへんわなぁ。アレが世に出てしばらく後Hatchさんが 「xlnonをxlNoneに訂正して使え」っちゅうてどっかのスレで注意を促しとりました けど、鮎さんこれは見落としとりましたナ。(笑) パクリマクロの陥るワナ、なんちゃって。(笑) わたしゃ関係ない(弥太郎)
そうなんですか、そのようなレスがあったとは露知らず(;^_^A アセアセ パクリは自己責任でですから、私の責任です\_( ・_・)ハイここテストに出ますよ♪ お手数かけましたm(._.)m ペコッ (川野鮎太郎)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.