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も見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
VBAで入力規則の設定
Excel(エクセル)
-
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
EXCEL VBAで、EXCELの入力規則でリストに設定された内容をすべて取得したい
Visual Basic(VBA)
-
7
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
8
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
11
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
12
Excel VBAでマウスの左クリックのイベントを検知するには
Visual Basic(VBA)
-
13
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
14
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
15
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
16
フォントの大きさ
Visual Basic(VBA)
-
17
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
18
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
19
シートを保護しても入力規則を使えるようにしたい
Excel(エクセル)
-
20
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでユーザーフォームにセル値...
-
セルの値を比較してセルの値の色を...
-
Excel UserForm の表示位置
-
Excel VBA 同じ処理を複数回行...
-
複数指定セルの可視セルのみを...
-
エクセルVBA 配列からセルに「...
-
VBA 特定のセルからoffsetされ...
-
VB6.0 ExcelオブジェクトのFind...
-
Rangeの範囲指定限界
-
【Excel VBA】一番右端セルまで...
-
エクセルのカーソルを非表示に...
-
ListBoxを選択したデータ編集② ...
-
VBAマクロ実行時エラーの修正に...
-
VBAのTIMER関数で返された値を...
-
SPREAD.netで選択セルの合計を...
-
Excelで空白セル直前のセルデー...
-
Excel-VBA セルのデータ書出し(Q2)
-
Excel VBA IF文がうまく動作し...
-
飛び地セルの空白判定
-
VBA 空白行に転記する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
【Excel VBA】一番右端セルまで...
-
Excel UserForm の表示位置
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
VBA にて、条件付き書式で背景...
-
C# DataGridViewで複数選択した...
-
入力規則のリスト選択
-
Excel VBA IF文がうまく動作し...
-
【VBA】写真の貼り付けコードが...
-
Excel 範囲指定スクショについ...
-
EXCEL VBA 文中の書式ごと複写...
-
Excel VBAでCheckboxの名前を変...
-
EXCEL 2010 VBAでピボットで複...
-
飛び地セルの空白判定
-
エクセルのカーソルを非表示に...
-
CellEnterイベント仕様について
おすすめ情報