【VBA リスト操作】A1セルに「該当なし」のプルダウンを設定する方法
- VBAを使用して、シートのA1セルに「該当なし」というプルダウン(入力規則)を設定する方法を教えてください。
- また、「該当なし」がすでに選択された状態やセルに表示される方法も教えてください。
- 前の質問は削除し、新しい質問に変更しました。よろしくお願いいたします。
- ベストアンサー
すみません、質問の内容を変更します。【VBA リスト操作】
With Worksheets("シート名").Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="該当なし" End With というように、VBAでA1のセルに対して、「該当なし」というプルダウン(入力規則)を設定し、「該当なし」がすでに選択された状態、若しくはタイトル的な感じで「該当なし」とセルに表示させる方法をお願いします。 前の質問を削除したいのですができません。 ご了承ください。 よろしくお願いいたします。
- fm0606
- お礼率13% (100/761)
- オフィス系ソフト
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>シートVBAのセレクトチェンジを使っており、無限ループみたいな感じが起こります Application.EnableEvents = False Range("A1").Value = "該当なし" Application.EnableEvents = True なら、どうでしょう
その他の回答 (1)
- ASIMOV
- ベストアンサー率41% (982/2351)
Range("A1").Value = "該当なし" を、追加すれば良いのでは
補足
ご回答ありがとうございます。 シートVBAのセレクトチェンジを使っており、無限ループみたいな感じが起こります。
関連するQ&A
- VBA リストを作成後、そのセルに文字列を挿入したい
With Worksheets("シート名").Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="該当なし" End With というように、A1のセルに対して、「該当なし」というプルダウン(入力規則)を設定し、そのあと文字列(文言)を挿入したいです。 その方法を教えてください。
- 締切済み
- オフィス系ソフト
- 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 だと、何も設定されません。
- ベストアンサー
- Excel(エクセル)
- エクセル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
- ベストアンサー
- その他(ソフトウェア)
- エクセル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だと思うのですが、 それでもだめでした。
- ベストアンサー
- Excel(エクセル)
- Excelマクロで、入力規則のリストに既に定義された名前を入れたい
入力規則のリストに、既に定義された名前を可変的に入れたいと考えています。 具体的には、以下のFormula1の中身を変数等を利用して、参照先を変化させたいのです。 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,Operator:=xlBetween, Formula1:="=$A$1:$A$10" 既に範囲に対して名前が定義されているので、それを利用する(というか利用しなければならない)制約があるのですが、単に文字列変数を入れるだけでは参照してくれないようです。 何かアイディアがあれば教えてください。
- ベストアンサー
- オフィス系ソフト
- 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 アドバイスをよろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- 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」をつけてみましたが、その場合はエラーは出ないものの入力規則も設定されませんでした・・・。
- ベストアンサー
- その他MS Office製品
- エクセル入力規則のマクロについての質問です。
エクセル入力規則のマクロについての質問です。 excel2003 os=WindowsXP の環境です。 E列の10行目から57行目、I列の10行目から60行目に1から9999までの数字のみ入力可能の条件を設定しようと下記のプログラムを作ったのですが、全く動いてくれません。ご教授のほどよろしくお願いします。 Private Sub Worksheet_Activate() Range("e10:e48").Select With Selection.Validation .Delete .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="0", Formula2:="9999" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "入力制限があります" .InputMessage = "" .ErrorMessage = "登録は9999までしか登録できません。9999以下のの数字を入力下さい。" .IMEMode = xlIMEModeAlpha .ShowInput = True .ShowError = True End With Range("i10:i60").Select With Selection.Validation .Delete .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="0", Formula2:="9999" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "入力制限があります。" .InputMessage = "" .ErrorMessage = "登録は9999までしか登録できません。9999以下のの数字を入力下さい。" .IMEMode = xlIMEModeAlpha .ShowInput = True .ShowError = True End With End Sub
- ベストアンサー
- その他(プログラミング・開発)
- 入力規則 日付をリストのプルダウンで選択したい
エクセルの入力規則を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 と表示させるにはどうすればいいでしょう?
- 締切済み
- Excel(エクセル)
- Excelでシートを保護してもマクロが使えるようにしたい
Excelのマクロについて、また質問させていただきます。 シートを保護してもマクロが使えるようにしたいのです。 Selection.Validation.Add Type:= _ xlValidateList, AlertStyle:= _ xlvalidalerstop, Operator:= _ xlBetween, Formula1:="=$A$1" というようなマクロを作ったとします。 このままなら使えるのですが シートを保護すると アプリケーション定義またはオブジェクト定義のエラーです。 と表示されるようになります。 前回質問させていただいたときにアドバイスいただいた Validation.Delete を付けても 状況は変わりません。 Unprotect password や Protect userinterfaceonly:=True を付けても、やはり無理なのです。 マクロについては まだまだ初心者の域を脱していません。 今回もまた明快なお答えをいただけること 期待しております。
- 締切済み
- オフィス系ソフト
お礼
ご回答ありがとうございます。 大変参考になりました。