• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:.Add Type:=xlValidateInpu)

.Add Type:=xlValidateInputOnlyがなぜエラーになるのか?

このQ&Aのポイント
  • VBAでA列の入力規則をひらがなにしたいが、.IMEMode = xlIMEModeHiraganaだけではエラーが発生する。
  • .IMEMode = xlIMEModeHiraganaに加えて.Add Type:=xlValidateInputOnlyを追加することでエラーが解消される。
  • なぜ.Add Typeがないとエラーになるのか理由が分からない。ValidationのヘルプにもAdd Typeに関する記載がない。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

すみません。#1です。編集ミスに気が付きました。 誤) ' ' ============================== 以上の説明から、 入力規則の設定に関しては   (Validation.)Add メソッド   (Validation.)Delete メソッド   各プロパティ設定 の順番に処理していく必要があるります。 ' ' ============================== 正) ' ' ============================== 以上の説明から、 入力規則の設定に関しては   (Validation.)Delete メソッド   (Validation.)Add メソッド   各プロパティ設定 の順番に処理していく必要があるります。 ' ' ============================== 以上、訂正をお願いします。 失礼しました。

orkfjvoitam
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 さっそく説明です。 > なぜ、Add Typeがないとエラーになるのでしょうか?   (Validation.)Add メソッド  指定された範囲に入力規則を追加します。   (Validation.)Delete メソッド  指定された範囲のオブジェクト(入力規則)を削除します。 ' ' ============================== ' ご提示のコード ' # エラーソース ' ' ============================== Sub test()   With Columns("a").Validation ' 入力規則(Validationオブジェクト)を削除します     .Delete ' 削除したオブジェクトのプロパティ設定は出来ません ' プロパティ設定をするべきオブジェクトが見つからないので ' エラーになります。     .IMEMode = xlIMEModeHiragana   End With End Sub ' ' ============================== ' A列に入力規則を(入力モードのみ設定し)追加します ' 日本語入力(IME)の設定をひらがなにします ' # 正しいやり方。 ' ' ============================== Sub Re8091146a()   With Columns("a").Validation ' 入力規則(Validationオブジェクト)を削除します ' 入力規則は二重に設定することはできません ' Delete メソッドは入力規則が見つからなくてもエラーになりません ' Add する為には一旦、Delete メソッドを実行する必要があります     .Delete ' A列に入力規則を(入力モードのみ)追加します     .Add Type:=xlValidateInputOnly ' 日本語入力(IME)の設定をひらがなにします。     .IMEMode = xlIMEModeHiragana   End With End Sub ' ' ============================== ' A列に既存の入力規則(入力モードのみ設定済)に対して ' 日本語入力(IME)の設定をひらがなに変更します。 ' # A列すべてに入力規則設定済であることが"確実"な場合のみ ' ' ============================== Sub Re8091146a()   With Columns("a").Validation ' 日本語入力(IME)の設定をひらがなにします ' A列に入力規則がない場合 ' A列に入力規則が設定されていないセルが含まれる場合 ' エラーになります。     .IMEMode = xlIMEModeHiragana   End With End Sub ' ' ============================== 以上の説明から、 入力規則の設定に関しては   (Validation.)Add メソッド   (Validation.)Delete メソッド   各プロパティ設定 の順番に処理していく必要があるります。 ' ' ============================== > Add Type:=xlValidateInputOnly > がどういう意味なのか知りたいのですが > Validationのヘルプを見ても、 > Add Typeに関する記載がありません。 まず、ヘリプから引用。 ' ' ==以下引用======================== Validation.Add メソッド 指定された範囲に入力規則を追加します。 構文 式.Add(Type, AlertStyle, Operator, Formula1, Formula2) 式 Validation オブジェクトを表す変数です。 パラメーター 名前 必須/オプション データ型 説明 Type 必須 XlDVType 入力規則の種類を指定します。 AlertStyle オプション バリアント型 (Variant)  入力規則でのエラーのスタイルを指定します。使用できる定数は、XlDVAlertStyle クラスの xlValidAlertInformation、xlValidAlertStop、xlValidAlertWarning のいずれかです。 Operator オプション バリアント型 (Variant)  データ入力規則の演算子を指定します。使用できる定数は、XlFormatConditionOperator クラスの xlBetween、xlEqual、xlGreater、xlGreaterEqual、xlLess、xlLessEqual、xlNotBetween、xlNotEqual のいずれかです。 Formula1 オプション バリアント型 (Variant)  データ入力規則での条件式の最初の部分を指定します。 Formula2 オプション バリアント型 (Variant)  データ入力規則での条件式の 2 番目の部分を指定します。引数 Operator が xlBetween または xlNotBetween 以外の場合、この引数は無視されます。 備考 Add メソッドに必要な引数は、入力規則の種類によって異なります。入力規則の種類を表す定数と必要な引数は次のとおりです。 入力規則の種類 引数 xlValidateCustom  引数 Formula1 を必ず指定します。引数 Formula2 は無視されます。引数 Formula1 には、データ入力が有効な場合は True に評価され、データ入力が無効な場合は False に評価される式を指定する必要があります。 xlInputOnly  AlertStyle、Formula1、または Formula2 を使用します。 xlValidateList  引数 Formula1 を必ず指定します。引数 Formula2 は無視されます。引数 Formula1 には、コンマで区切った値の一覧またはこの一覧へのシート参照を指定する必要があります。 xlValidateWholeNumber、xlValidateDate、xlValidateDecimal、xlValidateTextLength、または xlValidateTime  引数 Formula1 と引数 Formula2 のどちらかを指定する必要があります。両方を指定することもできます。 ' ' ==以上引用======================== 確かに ↑ 解り難いですね。 言葉で説明しても混乱すると思うので Excelメニューとの対応で確認してみて下さい。 # 以下、私がまとめたもの。 ' ' ============================== Validation.Add メソッドの(名前付き)引数Type に設定可能な値[Excel.XlDVType]は以下8種 [データの入力規則]ダイアログ +「設定]タブ ++【入力値の種類】 【整数】   xlValidateWholeNumber 【小数点数】   xlValidateDecimal 【リスト】   xlValidateList 【日付】   xlValidateDate 【時刻】   xlValidateTime 【文字列(長さ指定)】   xlValidateTextLength 【ユーザー設定】   xlValidateCustom [データの入力規則]ダイアログ +「日本語入力]タブ ++【日本語入力】   xlValidateInputOnly ' ' ============================== 日本語入力以外 の 7種類の規則 を設定しない場合 つまり 日本語入力モード のみ 設定する場合 は、     .Add Type:=xlValidateInputOnly という覚え方でいいと思います。 以上です。

orkfjvoitam
質問者

お礼

す、すごい。。。 とてもわかりやすい説明ありがとうございます。

関連するQ&A