
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) ipadのエクセルでキャラの選択をしたい。 1 2022/09/21 08:58
- Excel(エクセル) データ入力規則リスト 空白を無視 3 2022/07/13 15:11
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで入力規則の設定
Excel(エクセル)
-
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
EXCEL VBAで、EXCELの入力規則でリストに設定された内容をすべて取得したい
Visual Basic(VBA)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
6
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
ドロップダウンリストの初期表示値の指定
Microsoft ASP
-
9
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
10
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
11
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
12
Excelの入力規則で2列表示したい
Excel(エクセル)
-
13
Excelマクロで、入力規則のリストに既に定義された名前を入れたい
Excel(エクセル)
-
14
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
15
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
16
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
17
VBA 数式を残して値をクリアについて
Excel(エクセル)
-
18
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
19
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
20
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
Excelで空白セル直前のセルデー...
-
エクセル VBA ボタンをクリック...
-
VBAマクロ実行時エラーの修正に...
-
QRコード作成マクロについて
-
VBA:日付を配列に入れ別セルに...
-
特定の色のついたセルを削除
-
Excel VBAでCheckboxの名前を変...
-
Excel VBA 同じ処理を複数回行...
-
HTMLのテーブルのセルの値をPHP...
-
エクセル マクロ データの転記
-
DataGridViewのフォーカス遷移...
-
複数指定セルの可視セルのみを...
-
エクセルVBA 郵便番号の書式判...
-
Excel 範囲指定スクショについ...
-
データグリッドビューの結合セ...
-
DataGridViewでグリッド内に線...
-
【Excel VBA】マクロで書き込ん...
-
VBA にて、条件付き書式で背景...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excel UserForm の表示位置
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
複数指定セルの可視セルのみを...
-
C# DataGridViewで複数選択した...
-
【Excel VBA】マクロで書き込ん...
-
データグリッドビューの結合セ...
-
DataGridViewのフォーカス遷移...
-
Excel 範囲指定スクショについ...
-
EXCEL VBA 文中の書式ごと複写...
-
【Excel VBA】一番右端セルまで...
-
【VBA】写真の貼り付けコードが...
-
QRコード作成マクロについて
-
入力規則のリスト選択
-
CellEnterイベント仕様について
-
エクセル、マクロで番号を読込...
おすすめ情報