プロが教えるわが家の防犯対策術!

VbaでA列のみ入力規則でひらがなにしたいのですが、
Sub test()
With Columns(“a”).Validation
.Delete
.IMEMode = xlIMEModeHiragana
End With
End Sub
にすると、実行時エラー1004になります。

.Delete
.Add Type:=xlValidateInputOnly
.IMEMode = xlIMEModeHiragana

にすると、問題ないです。

.Add Type:=xlValidateInputOnly
がどういう意味なのか知りたいのですが
Validationのヘルプを見ても、
Add Typeに関する記載がありません。

なぜ、Add Typeがないとエラーになるのでしょうか?

A 回答 (2件)

すみません。

#1です。編集ミスに気が付きました。

誤)
' ' ==============================

以上の説明から、
入力規則の設定に関しては
  (Validation.)Add メソッド
  (Validation.)Delete メソッド
  各プロパティ設定
の順番に処理していく必要があるります。
' ' ==============================


正)
' ' ==============================

以上の説明から、
入力規則の設定に関しては
  (Validation.)Delete メソッド
  (Validation.)Add メソッド
  各プロパティ設定
の順番に処理していく必要があるります。
' ' ==============================

以上、訂正をお願いします。
失礼しました。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/06/02 12:31

こんにちは。


さっそく説明です。

> なぜ、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
という覚え方でいいと思います。


以上です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/17 22:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!