VBAで入力規則 エラーでも入れたい

このQ&Aのポイント
  • Excel2003を使っています。VBAで入力規則を設定しようとしていますが、エラーが発生してしまいます。セルのA1が空欄の状態で「=INDIRECT(A1)」を入力規則のリストとして使いたいのですが、エラーが発生してしまいます。また、直接入力規則を設定する場合でも、A1が空欄だとエラーメッセージが表示されます。VBAを使ってこのエラーを無視して入力規則を設定する方法はありますか?
  • Excel2003を使用しています。VBAを使って入力規則を設定しようとしていますが、エラーが発生してしまいます。セルのA1が空欄の状態で「=INDIRECT(A1)」を入力規則のリストとして使用したいですが、エラーが発生してしまいます。また、直接入力規則を設定する場合でも、A1が空欄だとエラーメッセージが表示されます。VBAを使ってこのエラーを無視して入力規則を設定する方法はありますか?
  • Excel2003を使っています。VBAで入力規則を設定しようとしていますが、エラーが発生します。セルのA1が空欄の状態で「=INDIRECT(A1)」を入力規則のリストとして使用したいのですが、エラーが発生してしまいます。また、直接入力規則を設定する場合でも、A1が空欄だとエラーメッセージが表示されます。VBAを使ってこのエラーを無視して入力規則を設定する方法はありますか?
回答を見る
  • ベストアンサー

VBAで入力規則 エラーでも入れたい

Excel2003を使っています。 Range("B1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=INDIRECT(A1)" これを使って「=INDIRECT(A1)」を入力規則のリストとして、セルのA1が空欄の状態で入れたいのですが、実行時エラー1004となってしまいます。 セルのA1には複数ある定義された名前のどれか一つが入るようにします。そして、そのどれか一つが入っていれば、エラーは起こることなく入力規則は設定されます。 ただ、A1は後々この資料を使うときに打ち込みたいため、VBAを走らせている段階では空欄のままにしておきたいのです。 これ、VBAを使わず直接入力規則を設定するときも、A1が空欄だと「元の値はエラーと判断されます。続けますか?」というメッセージが出ますよね? たぶん、これが原因だと思いますが、直接入れるときはそのメッセージを「はい」で強行することができます。 これをVBAで入れるときにもできないものかなと思っています。 VBAで強行して設定する方法はないものでしょうか? ちなみに「On Error Resume Next」をつけてみましたが、その場合はエラーは出ないものの入力規則も設定されませんでした・・・。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>ただ、A1は後々この資料を使うときに打ち込みたいため、 >VBAを走らせている段階では空欄のままにしておきたいのです。 設定した後に消去すれば良いと思います。 または入力規則側でエラー制御するか。 Formula1:="=IF(A1="""",A1,INDIRECT(A1))" http://okwave.jp/qa/q4207340.html?order=asc

tabasuko_otoko
質問者

お礼

すばらしい。 ありがとうございます。

関連するQ&A

  • エクセル2010で入力規則をVBAで記述

    エクセル2010で入力規則をVBAで記述したいです。 まずは、マクロの自動記録すると以下のコードが保存できました。 Selectionをrange("A1")に変更したのですが、エラーが出てきました。 With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="東京,ニューヨーク" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With 調べると Operator:=xlBetweenではなくて、Operator:=xlEqualだと思うのですが、 それでもだめでした。

  • 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 リスト操作】

    With Worksheets("シート名").Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="該当なし" End With というように、VBAでA1のセルに対して、「該当なし」というプルダウン(入力規則)を設定し、「該当なし」がすでに選択された状態、若しくはタイトル的な感じで「該当なし」とセルに表示させる方法をお願いします。 前の質問を削除したいのですができません。 ご了承ください。 よろしくお願いいたします。

  • VBA リストを作成後、そのセルに文字列を挿入したい

    With Worksheets("シート名").Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="該当なし" End With というように、A1のセルに対して、「該当なし」というプルダウン(入力規則)を設定し、そのあと文字列(文言)を挿入したいです。 その方法を教えてください。

  • 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 と表示すればよいのでしゅか? ご指導をよろしくお願いいた

  • 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 アドバイスをよろしくお願いいたします。

  • エクセルVBA セルの移動について

    今困っているのですが、A1~A8のセルに”あ”もしくは”い”が入ったときにB1のセルにとあるセルのリストを入力規制かけて、表示させるというVBAを作成中です。 と・・・そこまではできたのですが、希望としては、A1に文字が入った場合はセルを自動的にB1に移動させたいのです。 それと同じようにA2のときはB2、A3のときはB3にセルを持って行きたいのですが、どうしたらいいでしょうか。 どなたかわかる方、よろしくお願いいたします。 For i = 1 To 8 Select Case Cells(i, 1) Case "あ" Cells(i, 2).Activate Application.CutCopyMode = False With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$F$1:$F$10" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With Case "い" Selection.Cells(i, 2).Activate CutCopyMode = False With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$G$1:$G$10" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With Enxt End Sub

  • Excelマクロで、入力規則のリストに既に定義された名前を入れたい

    入力規則のリストに、既に定義された名前を可変的に入れたいと考えています。 具体的には、以下のFormula1の中身を変数等を利用して、参照先を変化させたいのです。 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,Operator:=xlBetween, Formula1:="=$A$1:$A$10" 既に範囲に対して名前が定義されているので、それを利用する(というか利用しなければならない)制約があるのですが、単に文字列変数を入れるだけでは参照してくれないようです。 何かアイディアがあれば教えてください。

  • ExcelVBA2000で入力規則の設定

    こんにちは。 ExcelVBA2000を使用して入力規則を設定しようと思うのですが、エラーが発生してしまい困っています。 ”1004 アプリケーション定義またはオブジェクト定義のエラーです。” が発生します。 ↓マクロの保存で取得できた内容は With Selection.Validation .Delete .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=AND(A1=JIS(A1),LENB(A1)<=70)" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With なのですが、これを再び実行させようとすると、エラーが発生します。 ご存知の方いらっしゃいましたら宜しくお願い致します。

  • Excel VBA 入力規則

    Excel VBAで、下記の様なコードを見ましたが、IgnoreBlank の意味がよく分かりません。 入力規則の「空白云々」のことだと思いますが、よろしくお願いします。 Sub setKiValidation() Dim d As Date ld = DateSerial(Year(Range("$A$1")), Month(Range("$A$1")) + 1, 0) With Range("休日").Validation .Delete .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="1", Formula2:= _ "=DAY(DATE(YEAR($A$1),MONTH($A$1)+1,0))" .IgnoreBlank = True .InCellDropdown = True .InputTitle = Month(ld) & "月 休日" .ErrorTitle = Month(ld) & "月 休日" .InputMessage = "数値(1~" & Day(ld) & ") を入力してください" .ErrorMessage = "数値(1~" & Day(ld) & ") を入力してください" .IMEMode = xlIMEModeOff .ShowInput = True .ShowError = True End With ' =SUM(IF(B19:B22<>"",1/COUNTIF(休日,B19:B22),)) ' =AND(0<COUNTIF(休日,DAY(A3)),MONTH(A3)=MONTH($A$1))

専門家に質問してみよう