【EXCEL2007 VBA】Validation入力規則→編集

このQ&Aのポイント
  • 通常Validation入力規則を使用すると、入力したセルデータはそのまま使用しますが、例えば山梨県を選択し、その同一セル内で山梨県に加えて甲府市と入力するとエラーが現れます。
  • Validationの使用にはこだわりませんが、とにかく選択肢の表示、選択、編集を素早くやりたいです。
  • 上の例であれば隣のセルで山梨県の市を選べるようにすればいいじゃないか、という指摘があるかもしれませんが、あくまでも例なので、それはナシとして下さい。
回答を見る
  • ベストアンサー

【EXCEL2007 VBA】Validation入力規則→編集

【EXCEL2007 VBA】Validation入力規則→編集 こんにちは。 通常Validation入力規則を使用すると、入力したセルデータはそのまま使用しますが、例えば↓のようなコードで"山梨県"を選択し、その同一セル内で"山梨県"に加えて"甲府市"と入力するとエラーが現れます。 そのエラーが現れなく方法はあるのでしょうか? Sub ChooseThenEdit() With Range("D2").Validation .Delete .Add Type:=xlValidateList, _ Formula1:="福岡県,岡山県,山梨県" End With End Sub Validationの使用にはこだわりませんが、とにかく 1.選択肢の表示 2。選択 3.編集 を素早くやりたいのです。 注1.上の例であれば隣のセルで山梨県の市を選べるようにすればいいじゃないか、という指摘があるかもしれませんが、あくまでも例なので、それはナシとして下さい。 注2.ListBoxを使用すればまあ出来ますが、ちょっと素早くできないと思うので、ご勘弁ください。 ではでは。ご回答ありがとうございます。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>その同一セル内で"山梨県"に加えて"甲府市"と入力するとエラーが現れます。 >そのエラーが現れなく方法はあるのでしょうか? Sub ChooseThenEdit() With Range("D2").Validation .Delete .Add Type:=xlValidateList, _ Formula1:="福岡県,岡山県,山梨県" .showerror= false End With End Sub

maruyl
質問者

お礼

keithin様。動いてこれで正しいことが確認できました!ただのヘルプの読み不足でしたね。。ご回答ありがとうございました。

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

End With の前に、以下の1文を入れて見て下さい。 .ShowError = False

maruyl
質問者

お礼

kybo様。ご回答ありがとうございました。動いてこれで正しいことは確認できたのですが、なんと同時刻に正解を送ってきてくださった方がいて、向こうの方がほんの少し早いので、No1の方をベストアンサーとさせていただきます。ご容赦くださいませ。

関連するQ&A

  • VBAで入力規則の設定

    いつもお世話になっております。 VBAを勉強して3ヶ月程度の初心者です。 VBAでの入力規則の設定について質問させていただきます。 A1セルに入力規則の設定を行い、0~10までの数値を選択できるようにしたいと考えています。 Sub Test() Range("A1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation _ , Formula1:="0,1,2,3,4,5,6,7,8,9,10" End Sub とコードを記述すれば、確かに望みの仕様は満たされるのですが、複数のセルに入力規則を設定する場合、 また、リストの数が増えた場合を考えて、"1,2,3,4,5,6,7,8,9,10"を変数に出来ない?と考えて・・・ Sub Test2() Dim kazu(10) As Long kazu(0) = 0 kazu(1) = 1 kazu(2) = 2 kazu(3) = 3 kazu(4) = 4 kazu(5) = 5 kazu(6) = 6 kazu(7) = 7 kazu(8) = 8 kazu(9) = 9 kazu(10) = 10 Range("A2").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation _ , Formula1:=kazu End Sub なんて事もやってみましたが・・・駄目でした。 もう一点、初期値に0を表示したい場合は、入力規則コードの後に、  Range("A1").Value=0 と表示すればよいのでしゅか? ご指導をよろしくお願いいた

  • excel2003 vba の入力規則リスト

    入力規則でリスト登録する記述について、教えていただけないでしょうか。 例えば変数(long)で、a=1,b=5 というものがあったとします。 シート1のA1セルに、1,2,3,4,5 でそれぞれ数値選択できる入力リスト を作成したいのですが、うまくいきません。どのように修正したらよいか教えて欲しいです。 Dim a As long Dim b As long a=1 b=5 With Worksheets("Sheet1").Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=a, Formula2:=b End With だと、何も設定されません。

  • 入力規則 日付をリストのプルダウンで選択したい

    エクセルの入力規則をVBAでやる時に日付をリストのプルダウンで選択したいのですが Sub test() With Range("A1").Validation .Delete .Add Type:=xlValidateList, Formula1:="2014/1/1,2014/1/2" End With End Sub をすると、 1/1/2014 1/2/2014 にとプルダウン上で表示されてしまい、なおかつ文字列になってしまいます。 .Add Type:=xlValidateList, Formula1:=#1/1/2014# & "," & #1/2/2014# .Add Type:=xlValidateList, Formula1:=Format(#1/1/2014#, "yyyy/mm/dd") & "," & Format(#1/2/2014#, "yyyy/mm/dd") これでも同じでした。 2014/1/1 2014/1/2 と表示させるにはどうすればいいでしょう?

  • 入力規則 ひらがな VBA うまくできない

    シート全体を入力規則でひらがな入力するvbaコードを実行したいのですが Sub Macro2() With Cells.Validation .Delete .IMEMode = xlIMEModeHiragana End With End Sub これだと実行時エラー1004が発生するのですが、何かが間違ってると思うのですが、 どこが変でしょうか? ご教授よろしくお願いします。

  • Excel VBA 入力規則のリスト化

    Excel VBAにて入力規則でリスト化しようと思っています。 通常セルを範囲指定によってリスト化する場合、 以下のようなコードになると思うのですが、 (セルA1にセルB1~B10の内容がリスト化される) Range("A1").Select With Selection.Validation .Add Type:=xlValidateList, Formula1:="=B1:B10" End With 例えばB1~B3, B6~B10などのような不連続な範囲をリスト化 する方法はありませんでしょうか? 宜しくご教示の程お願い致します。

  • EXEL VBA で入力規則を変更するには

    現在去年のデータの入力作業をしていますが年月日を入力する際、 "2010/4/1"とか"2010/4/28"と打たなければならず、セルの書式設定とか 入力規則でもできません。 A3のセルにきたら"2010/"が既にはいっており、続けて"4/1"とか"4/28"とか日付だけを入力すればよいようにVBAでやれば出来ると思い、ここ2日ほどサイトとか見て勉強しましたが下記のところまが精一杯で動きません。 Private Sub Workbook_Activate() With Selection.Validation .Delete Range("A3", "A300").Select Add Type:=xlValidateDate Formula1 = "2010/mm/dd" End With End Sub どなたかご教授お願いします。

  • エクセルVBAで入力規則を設定するには?

    22歳男性です。 エクセルVBAについて質問があります。 シート上にあるボタンをクリックすると、特定のセルに入力規則を追加するというプログラムを作っています。 以下のコードのように記述しているのですが、まったくうまくいきません。 何が悪いのかご指摘いただけたらと思います。 ■コード■ Private Sub CommandButton1_Click() With Range(\"b2\").Validation .Add Type:=xlValidateWholeNumber, Operator:=xlBetween, Formula1:=10, Formula2:=20 End With End Sub

  • VBAでセルに入力規則(選択し)を設定する

    VBAでセルに入力規則(選択し)を設定する EXCELのシート上のボタンに下のようなコードを書いて実行すると 「アプリケーション定義又はオブジェクト定義のエラー」が矢印のところで出てしまいます。 独学でチャレンジしていますが、原因がわかりません。どなたか原因と対策を教えて下さい。     //ボタンの中のコード  //セル、$E$147:$E$158 にセットした「選択し」をセル E7 へセットする。  Dim CRng As Range  Set CRng = Range("E7")  With CRng.Validation   .Delete  .Add Type:=xlValidateList, Formula1:="=$E$147:$E$158"  ←ここでエラー End With

  • 【Excel VBA】チェンジイベント

    Excel2003を使用しています。 マクロの記録を元に、チェンジイベントを下記のように作成しました。 下記は、B列の11行目以降のセルのデータが変化したら、その行のF列に入力規則を設定するように作成したつもりです。 テストもしてみましたが、きちんと動作しました。 さらに、B列の11行目以降のセルのデータがクリアされたら、その行のF列に設定した入力規則もクリアしたく  If Target.Columns(2).ClearContents And Target.Row >= 11 Then   Cells(Target.Row, 6).Validation.Delete  End If 分からないながらにも、↑このように追加して試してみたのですが、何も動作しなくなりました(^_^;) こういう場合は、どのようにコードを書いたらいいのでしょうか? よろしくお願いします。 -------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = 2 And Target.Row >= 11 Then   With Cells(Target.Row, 6).Validation    .Delete    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _    xlBetween, Formula1:="=$F$3:$F$7"    .IgnoreBlank = True    .InCellDropdown = True    .InputTitle = ""    .ErrorTitle = ""    .InputMessage = ""    .ErrorMessage = ""    .IMEMode = xlIMEModeNoControl    .ShowInput = True    .ShowError = False   End With  End If End Sub ------------------------------------------------

  • VBAの入力規則について質問です。

    VBAの入力規則について質問です。 Excelで、D列は全角50文字(半角100文字)以内の入力を可能とし、 それ以上の入力の場合、エラーを表示させたいと思います。 全角と半角をバイト数で判別し、以下のようなコードを考えましたが、 全角の場合しかうまくできません。 Private Sub Worksheet_Change(ByVal Target As Range) Dim ByteCount As Long ByteCount = LenB(StrConv(Target, vbFromUnicode)) If Target.Column = 4 Then Select Case ByteCount Case Is > 100 With Target.Validation .Add _ Type:=xlValidateTextLength, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=1, Formula2:=100 .ErrorTitle = "入力エラー" .ErrorMessage = "全角50文字(半角100文字)以内で入力してください。" .IgnoreBlank = False End With Case 1 To 100 With Target.Validation .Add _ Type:=xlValidateTextLength, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=1, Formula2:=50 .ErrorTitle = "入力エラー" .ErrorMessage = "全角50文字(半角100文字)以内で入力してください。" .IgnoreBlank = False End With End Select End If End Sub アドバイスをよろしくお願いいたします。

専門家に質問してみよう