Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9153 / 13644 ツリー ←次へ | 前へ→

【29023】スクロールバーの設定 しろうと 05/9/21(水) 21:21 質問[未読]
【29024】Re:スクロールバーの設定 Hiroko 05/9/21(水) 21:33 回答[未読]
【29026】Re:スクロールバーの設定 しろうと 05/9/21(水) 22:06 質問[未読]
【29028】Re:スクロールバーの設定 Hiroko 05/9/21(水) 22:39 発言[未読]
【29029】Re:スクロールバーの設定 しろうと 05/9/21(水) 22:52 お礼[未読]
【29031】Re:スクロールバーの設定 ichinose 05/9/21(水) 22:57 発言[未読]
【29047】Re:スクロールバーの設定 しろうと 05/9/22(木) 13:18 質問[未読]
【29059】Re:スクロールバーの設定 ichinose 05/9/22(木) 19:07 発言[未読]
【29061】Re:スクロールバーの設定 しろうと 05/9/22(木) 19:21 お礼[未読]

【29023】スクロールバーの設定
質問  しろうと  - 05/9/21(水) 21:21 -

引用なし
パスワード
   スクロールバーを作成し,スクロールバーで設定した値を,A1に表示させたいと思っています。
但し,取得できる値は,等間隔ではなく,例えば,10,30,80,100の4つの値しか,選択できないようにしたいのですが,このような設定を行うことはできるのでしょうか?
もし,ご存知の方がいらっしゃいましたら,ご回答よろしくお願い致します。

【29024】Re:スクロールバーの設定
回答  Hiroko  - 05/9/21(水) 21:33 -

引用なし
パスワード
   ▼しろうと さん:

多分表だと思うのですが・・・
このコードはA列に10や30や80があるという前提で作っています。

Sub 数字呼出スクロール() 'これは10を呼び出しスクロールです

Dim i As Long
Dim k As Long 'k=最終行

k = Range("A6 65536").End(xlUp).Row

For i = k To 1 Step -1
If Cells(i, 1) = "10" Then
 Application.Goto reference:= _
 Cells(i, 1), scroll:=True
End If
Next

End Sub

一度試してみてください。


>スクロールバーを作成し,スクロールバーで設定した値を,A1に表示させたいと思っています。
>但し,取得できる値は,等間隔ではなく,例えば,10,30,80,100の4つの値しか,選択できないようにしたいのですが,このような設定を行うことはできるのでしょうか?
>もし,ご存知の方がいらっしゃいましたら,ご回答よろしくお願い致します。

【29026】Re:スクロールバーの設定
質問  しろうと  - 05/9/21(水) 22:06 -

引用なし
パスワード
   ご回答ありがとうございます。

できれば,セルA1以外のセルには,数字を入力しておかない方法を
教えていただけたら,と思いますが,いかがでしょうか?

質問内容をもう少し,詳しくさせていただきたいと思います。

現在,
ScrollBar1をEXCELシート上に作成し,プロパティの項目別シートにおいて,
LargeChangeを10,Maxを100,Minを0と設定し,更に,下記のコードを追記しております。

 Private Sub ScrollBar1_Change()
   Cells(1, 1).Value = ScrollBar1.Value
 End Sub

この状態で,ScrollBarを動かしますと,セルA1には,0〜100までの値が
10刻み毎に表示されますが,なんらかの操作(コード作成)を行い,
ScrollBarを動かしたときに,10,30,80,100のみしか表示しないようにしたいのです。

▼Hiroko さん:
>▼しろうと さん:
>
>多分表だと思うのですが・・・
>このコードはA列に10や30や80があるという前提で作っています。
>
>Sub 数字呼出スクロール() 'これは10を呼び出しスクロールです
>
>Dim i As Long
>Dim k As Long 'k=最終行
>
>k = Range("A6 65536").End(xlUp).Row
>
>For i = k To 1 Step -1
>If Cells(i, 1) = "10" Then
> Application.Goto reference:= _
> Cells(i, 1), scroll:=True
>End If
>Next
>
>End Sub
>
>一度試してみてください。
>
>
>>スクロールバーを作成し,スクロールバーで設定した値を,A1に表示させたいと思っています。
>>但し,取得できる値は,等間隔ではなく,例えば,10,30,80,100の4つの値しか,選択できないようにしたいのですが,このような設定を行うことはできるのでしょうか?
>>もし,ご存知の方がいらっしゃいましたら,ご回答よろしくお願い致します。

【29028】Re:スクロールバーの設定
発言  Hiroko  - 05/9/21(水) 22:39 -

引用なし
パスワード
   ▼しろうと さん:
>
> Private Sub ScrollBar1_Change()
>   Cells(1, 1).Value = ScrollBar1.Value
> End Sub
>
>この状態で,ScrollBarを動かしますと,セルA1には,0〜100までの値が
>10刻み毎に表示されますが,なんらかの操作(コード作成)を行い,
>ScrollBarを動かしたときに,10,30,80,100のみしか表示しないようにしたいのです。
>
失礼しました。誤解していました。変則の数字の間隔でスクロールバーで動かすことなのですね。

変則の数字だったら、マクロではないですが、シート上で「入力規則」のリストで設定
されてはいかがでしょう。

【29029】Re:スクロールバーの設定
お礼  しろうと  - 05/9/21(水) 22:52 -

引用なし
パスワード
   規則的な間隔で数値を変えるものと,変則的な間隔で数値をかえるものが
あり,統一感を出すためにも,両方ともスクロールバーで構築したいと
思っていたのですが,ちょっと難しいようですね。
「入力規則」のリスト設定を活用させていただきたいと思います。
ご提案,ありがとうございました!

>失礼しました。誤解していました。変則の数字の間隔でスクロールバーで動かすことなのですね。
>
>変則の数字だったら、マクロではないですが、シート上で「入力規則」のリストで設定
>されてはいかがでしょう。

【29031】Re:スクロールバーの設定
発言  ichinose  - 05/9/21(水) 22:57 -

引用なし
パスワード
   こんばんは。

スクロールバーのChangeイベントで

'============================================
Private Sub ScrollBar1_Change()
  Dim scl As Variant
  scl = Array(0, 10, 30, 80, 100)
  With ScrollBar1
   wk = Application.Match(.Value, scl, 1)
   If .Value = scl(wk - 1) Then
   ElseIf Range("a1").Value < .Value Then
     .Value = IIf(UBound(scl) < wk, scl(UBound(scl)), scl(wk))
   Else
     .Value = scl(wk - 1)
     End If
   If .Value = 0 Then .Value = 10
   Range("a1").Value = .Value
   End With
End Sub


とすれば、何とかできそうですが・・・、
まっ、入力規則やオプションボタンのほうが楽ですよね!!

【29047】Re:スクロールバーの設定
質問  しろうと  - 05/9/22(木) 13:18 -

引用なし
パスワード
   ご回答ありがとうございます!

早速,試してみたのですが,エラーが起きてしまいました・・・

できれば,使用させていただきたいと思っておりますので,
もし,原因がわかりましたら,ご連絡いただけないでしょうか?

以上,よろしくお願い致します。

▼ichinose さん:
>こんばんは。
>
>スクロールバーのChangeイベントで
>
>'============================================
>Private Sub ScrollBar1_Change()
>  Dim scl As Variant
>  scl = Array(0, 10, 30, 80, 100)
>  With ScrollBar1
>   wk = Application.Match(.Value, scl, 1)
>   If .Value = scl(wk - 1) Then
>   ElseIf Range("a1").Value < .Value Then
>     .Value = IIf(UBound(scl) < wk, scl(UBound(scl)), scl(wk))
>   Else
>     .Value = scl(wk - 1)
>     End If
>   If .Value = 0 Then .Value = 10
>   Range("a1").Value = .Value
>   End With
>End Sub
>
>
>とすれば、何とかできそうですが・・・、
>まっ、入力規則やオプションボタンのほうが楽ですよね!!

【29059】Re:スクロールバーの設定
発言  ichinose  - 05/9/22(木) 19:07 -

引用なし
パスワード
   ▼しろうと さん:
こんばんは。

>ご回答ありがとうございます!
>
>早速,試してみたのですが,エラーが起きてしまいました・・・
どのような操作を行ったときに
どのようなエラーが発生したかを記述してください。


>
>できれば,使用させていただきたいと思っておりますので,
>もし,原因がわかりましたら,ご連絡いただけないでしょうか?
>
>以上,よろしくお願い致します。
>

新規ブックで試してください。

・ Sheet1というシートにコマンドバー「コントロールツールボックス」
  にあるスクロールバーコントロール適当な大きさに配置します(ScrollBar1)。

・ このスクロールバーコントロールのプロパティは、事前に以下のように
  設定してください。
  min=0
  max=100 (しろうと さんの記述にあったので書きませんでしたが) 
  これ以外は、規定値

で当該シートのモジュールに

>>スクロールバーのChangeイベントで
>>
>>'============================================
>>Private Sub ScrollBar1_Change()
>>  Dim scl As Variant
>>  scl = Array(0, 10, 30, 80, 100)
>>  With ScrollBar1
>>   wk = Application.Match(.Value, scl, 1)
>>   If .Value = scl(wk - 1) Then
>>   ElseIf Range("a1").Value < .Value Then
>>     .Value = IIf(UBound(scl) < wk, scl(UBound(scl)), scl(wk))
>>   Else
>>     .Value = scl(wk - 1)
>>     End If
>>   If .Value = 0 Then .Value = 10
>>   Range("a1").Value = .Value
>>   End With
>>End Sub
>>

このコードです。

スクロールコントロールを動かしてみてください。

Excel2002でのテストでは正常に動作しています。

【29061】Re:スクロールバーの設定
お礼  しろうと  - 05/9/22(木) 19:21 -

引用なし
パスワード
   ご連絡ありがとうございます。

下記の設定をしておらず,

>  min=0
>  max=100 (しろうと さんの記述にあったので書きませんでしたが) 

スクロールバーをクリックすると

『実行時エラー'9':
インデックスが有効範囲にありません。』

とのエラーが発生しておりました。

ご助言の通り,設定することにより,
おかげさまで,無事に動作させることができました!

本当にありがとうございました!!

9153 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free