
No.1ベストアンサー
- 回答日時:
こんにちは、
入力規則でリストには、Index系プロパティは無いようです。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
従って、選択が出来ないので、設定セルに値を書き込む形になるのではないかと思います。
インデックス=0 とは空白の事でしょうか?
入力規則設定セル Range("A1") = 値(表示したい値)
ここからは、個人的興味での余談です。(所謂、力業かも知れません)
リストの設定は、どのようにされていますでしょうか?
登録方法にもよりますが、
セル範囲の場合リスト1番目は設定範囲の1と言う事になりそうです。
数式で範囲を設定している場合(リスト1番目は設定範囲の1)
Sub Test()
Dim myList
On Error Resume Next
With Range("A1").Validation
If .Type = xlValidateList Then
myList = Right(.Formula1, Len(.Formula1) - 1)
Range("A1") = Range(myList)(3).Value
End If
End With
On Error GoTo 0
End Sub
3番目の値を取得し書き込んでいます。
配列なと値を設定している場合、りんご,みかん,,, のような登録
(リスト1番目は配列の0になります)
Sub Test1()
Dim myList
On Error Resume Next
With Range("A2").Validation
If .Type = xlValidateList Then
myList = Split(.Formula1, ",")
Range("A2") = myList(2)
End If
End With
On Error GoTo 0
End Sub
ここ迄書いて思う事は、リストインデックスが無いと選択すると言う事は、出来ないようですね。
また、入力規則の設定内容の値をVBAで入力する場面は、どのような場面なのかと思いました。
(値の設定が分っていればそれを入れれば良いし、そもそも運用者の為の機能?)
単純に空白にしたいのなら、Range("A1")="" でOKかと、
やった事が無かったので、考えてみましたが意味が無いようにも思いました。
知らないだけで、簡単なやり方があるかも知れません。
回答ありがとうございます。
ちょっとややこしいのですが、以下のようなケースで悩んでいます。
A列がデータの列になっていて、A列に直接入力するパターンと、B列が入力規則リストになっていて、リスト選択するとA列にデータが設定される(リスト選択の行はA列は計算式になっている)という、2通りのデータ入力パターンをもつ表があります。
このA列のデータをすべて0で初期化したいです。
リスト選択形式のデータについては、リストの先頭を選択すれば0が設定される仕組みとなっているので、indexなどがあればindex=0を選択できれば0で初期化できるかなと思いました。
No.3
- 回答日時:
こんなのは、どうでしょう?
そこそこ動くとは思うのですが、もしかしたら、No.1さんやNo.2さんがやっているように、Validation.Typeを判断する必要があるかもしれません。暇だったら、試してみて下さい。
Sub sample()
Dim r As Range
For Each r In Cells.SpecialCells(xlCellTypeAllValidation)
With r.Validation
If Left(.Formula1, 1) = "=" Then
.Parent.Value = Evaluate(.Formula1)(1)
Else
.Parent.Value = Split(.Formula1, ",")(0)
End If
End With
Next r
End Sub
回答ありがとうございます。
いろいろと書き方があるので勉強になります。
いただいたサンプルコードは難しいですが試してみたいと思います。
No.2
- 回答日時:
こんにちは
簡単かと思ったら、ちと手ごわいですね。
対象セルに入力規則が設定されていない場合とか、リストが設定されていてもセル範囲形式のリストと直接列挙するリスト形式など指定方法が複数あったりしますので…
で、こんなのではいかがでしょうか?
ひとまず、処理対象のセルを直接指定する形式にしてあります。
Sub Sample()
Dim c, t, e
Set c = Range("E4") '←処理の対処とするセル
On Error Resume Next
t = c.Validation.Type
e = Err
On Error GoTo 0
If e Then Exit Sub
t = c.Validation.Formula1
If Left(t, 1) = "=" Then
t = Range(Right(t, Len(t) - 1)).Cells(1, 1).Value
Else
t = Split(t, ",")(0)
End If
c.Value = t
End Sub
説明が不足していてすいません、リストは別シートに定義されているデータ群に対して名前の定義を使用して指定しています。
リストを直接入力していた場合には、説明いただいたような処理で取得できることが分かったので今後の参考になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
VBAで入力規則の設定
Excel(エクセル)
-
EXCEL VBAで、EXCELの入力規則でリストに設定された内容をすべて取得したい
Visual Basic(VBA)
-
-
4
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
8
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
9
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
10
EXCEL VBA で指定した範囲に入力があるかどうか?
Visual Basic(VBA)
-
11
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
12
条件付き書式のコピーについて(参照先も自動で変更したい)
Excel(エクセル)
-
13
【マクロ】名前を保存する際に、同じファイルがあった場合に、メッセージを表示
Excel(エクセル)
-
14
Excelの入力規則で2列表示したい
Excel(エクセル)
-
15
エクセル・マクロ(VBA)で、指定範囲を保存したい。
Excel(エクセル)
-
16
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
17
VBAでブック保護非保護を判定するには?
Excel(エクセル)
-
18
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
19
エクセルVBAでオプションボタンを無効にする方法
Excel(エクセル)
-
20
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel UserForm の表示位置
-
VBAマクロ実行時エラーの修正に...
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
DataGridViewでグリッド内に線...
-
【Excel VBA】一番右端セルまで...
-
エクセルVBAによる不連続データ...
-
For~Next ループ内でUnionメソ...
-
セルの半透明着色処理
-
【エクセルVBA】FindNextで検索...
-
Excel VBA でFunctionプロシジ...
-
「Spread」のセルを移動させる...
-
エクセルの値を範囲指定で取得...
-
エクセルVBA 配列からセルに「...
-
DataGridViewのカレントセル内...
-
データグリッドビューの結合セ...
-
エクセル、マクロで番号を読込...
-
QRコード作成マクロについて
-
VBAについて
-
PasteSpecial Paste:=[********...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel UserForm の表示位置
-
VBAマクロ実行時エラーの修正に...
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
【VBA】写真の貼り付けコードが...
-
データグリッドビューの結合セ...
-
複数指定セルの可視セルのみを...
-
エクセル、マクロで番号を読込...
-
CellEnterイベント仕様について
-
C# DataGridViewで複数選択した...
-
【ExcelVBA】値を変更しながら...
-
EXCEL VBA 文中の書式ごと複写...
-
マクロ初心者です。 マクロで範...
-
【Excel VBA】一番右端セルまで...
-
【Excel VBA】マクロで書き込ん...
-
VBA:日付を配列に入れ別セルに...
-
DataGridViewでグリッド内に線...
-
DataGridViewのフォーカス遷移...
おすすめ情報