[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ボタンでプルダウンの次の項目にしたい。』(SASIO)
テレビのリモコンの選局のように、
ボタンを作り、次(or前)を押すと、プルダウンの次(or前)にする方法
いらっしゃいましたら返信お願いします。
< 使用 Excel:Office365、使用 OS:Windows8 >
>テレビのリモコンの選局
テレビの番組表のことか? だとしたら、右側のチャンネルのことか? それとも下側の次の番組のことか?
(通りすがり) 2021/11/16(火) 14:12
プルダウン(入力規則?)とボタンを使用するのなら、マクロ使用になります スピンボタンを使用すればリンクセルを INDEX関数の行番号にすれば出来ると思います (プルダウン不使用) (どん) 2021/11/16(火) 15:42
>ボタンを作り、次(or前)を押すと、プルダウンの次(or前)にする方法 プルダウンとは入力規則のリストの事ですね?
Sub 前へ() Dim v As Variant, i As Long
With ActiveCell If Left(.Validation.Formula1, 1) = "=" Then v = Application.Transpose(Range(.Validation.Formula1)) Else v = Split(.Validation.Formula1, ",") End If For i = LBound(v) + 1 To UBound(v) If .Value = v(i) Then .Value = v(i - 1) Exit For End If Next End With End Sub
Sub 次へ() Dim v As Variant, i As Long
With ActiveCell If Left(.Validation.Formula1, 1) = "=" Then v = Application.Transpose(Range(.Validation.Formula1)) Else v = Split(.Validation.Formula1, ",") End If For i = LBound(v) To UBound(v) - 1 If .Value = v(i) Then .Value = v(i + 1) Exit For End If Next End With End Sub
With ActiveCell には、入力規則が設定しているセルを記述してください。
例) With Range("A10")
(ピンク) 2021/11/16(火) 22:52
各1行目の 【Sub 前へ()】・【Sub 次へ()】 日本語の部分ですが、
ボタンの名前と一致していればいいんですよね?
各4行目の【With ActiveCell】の部分ですが、A10セルであれば
With Range("A10")と入れるんですか? With ActiveCellの後ろに入れるんですか?
夜分遅くすみません。
(SASIO) 2021/11/16(火) 23:59
>各1行目の 【Sub 前へ()】・【Sub 次へ()】 日本語の部分ですが、 >日本語の部分ですが、ボタンの名前と一致していればいいんですよね?
ボタンの名前は、問いません [前へ]の動作をするのなら、 ボタンを右クリック ⇒ マクロの登録 ⇒ 表示された一覧より[前へ]を 選択して[OK]ボタンを押してください。
>With Range("A10")と入れるんですか?
Sub 前へ() Dim v As Variant, i As Long
With Range("A10") If Left(.Validation.Formula1, 1) = "=" Then v = Application.Transpose(Range(.Validation.Formula1)) Else
です (ピンク) 2021/11/17(水) 00:37
仮に10項目あったとして、
最後の項目を選択しようとしたとき、
10回、次へをクリックすることが適切とはとても思えません。
普通にドロップダウンで、全項目表示して、マウスで一回クリックするのが早いでしょう。
次に進むことも前に戻ることも、Excelの機能をそのまま使うのが最適なように思うのですが、
質問者さんはいかがお考えでしょうか。
(γ) 2021/11/17(水) 00:59
入力規則セルの値が変化すると、アクティブシートが変わるのですか。
しかも、順番に処理していくなら必要性はあるかもしれませんね。
それなら、次のシートを選択とか、前のシートを選択とか
直接的に実行したほうが早くないですか?
Activesheet.Next.Select
とか、
Activesheet.Previous.Select
とかを、クイックアクセスツールバーにでも登録しておけば済むのでは?
(γ) 2021/11/17(水) 09:34
一言メッセージを入れておいてください。
(PP) 2021/11/17(水) 11:15
1.シートのどこかにフォームコントロールのスピンボタンを置く
2.スピンボタンを右クリックして書式設定を選び、
「コントロール」タブの最大値を、リストの最大値に合わせる(最小値は1)
「リンクするセル」はスピンボタンを置いたセルに設定し、必要であれば文字色を背景色と同じにして文字を見えなくする
3.A2セルの入力規則をやめて、数式「=INDEX(名前リスト,スピンボタンとリンクするセル)」を入力
これで、スピンボタンに合わせて変化するリストの値が得られます。
※▲で数値が上がり、▼で数値が下がります。逆の変化にしたい場合はINDEX関数の第2引数を工夫してください。)
(きまぐれおじさん) 2021/11/17(水) 15:33
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.