• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで入力規則の設定)

VBAで入力規則の設定

このQ&Aのポイント
  • VBAを使ってA1セルに入力規則を設定する方法について教えてください。
  • セルに数値のリストを設定する際、コード内で変数を使用する方法を知りたいです。
  • 入力規則コードの後に初期値を設定する方法を教えてください。

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

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

入力規則のリストネタを、カンマ区切りの文字列で作成するだけです。 シンプルに: sub macro1()  dim i as integer  dim buf as string  for i = 0 to 10   buf = buf & "," & i  next i  buf = mid(buf,2)  range("A1").validation.delete  range("A1").validation.add type:=xlvalidatelist, formula1:=buf  range("A1") = 0 end sub #参考 >初期値に0を表示したい場合は、入力規則コードの後に、 入力規則コードの「前」に初期値を記入することで、入力規則で「許可していない値を初期値として」セットする事もできます。

genta1019boston
質問者

お礼

ありがとうございます。

その他の回答 (3)

  • classical
  • ベストアンサー率29% (14/47)
回答No.3

 配列を使わなくても、リスト用シートを作成した方が早いのではないでしょうか?  例えば、sheet2のA1に1、A2に2・・・ とリストを作成しておいて、そこから参照すれば、リスト項目が増えた場合でも対応できます。  なお、質問文ではセルを選択していますが、任意の場所(選択セル(複数可)) に対して実行できるようにしています。 _______________ Sub sample() Dim ListWS As Worksheet Set ListWS = Worksheets("sheet2") 'リスト用シート Dim MyRg As Range Set MyRg = Selection '選択しているセルを格納 ListWS.Range("A1").CurrentRegion.Name = "MyList" 'リスト用シートに名前を付ける   'currentregionとは、選択しているセルを含む、空白で囲まれた範囲 With MyRg.Validation .Delete .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertInformation, _ Formula1:="=MyList" MyRg.Value = 0 End With End Sub でどうでしょうか?

genta1019boston
質問者

お礼

ありがとうございます。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>もう一点、初期値に0を表示したい場合は、 常にA1セルを選択した時は0を表示したいのであれば シートモジュールに以下のコードを Private Sub Worksheet_SelectionChange(ByVal Target As Range)   With Target     If .Address = "$A$1" Then .Value = 0   End With End Sub

genta1019boston
質問者

お礼

ありがとうございます。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

配列kazuに収められている数値を","で繋ぐ必要があります。 ここではJoin関数を使いましたので変数の型はLongではエラーが出るので Variantにしています。 Dim kazu(10) As Variant, i As Long For i = 0 To 10   kazu(i) = i Next Range("A2").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation _ , Formula1:=Join(kazu, ",") >Range("A1").Value=0 >と表示すればよいのでしゅか? 良いのでは

genta1019boston
質問者

お礼

ありがとうございます。