Excel VBA質問箱 IV

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

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


1902 / 13645 ツリー ←次へ | 前へ→

【71110】スピンボタン クリシュファー 12/1/30(月) 13:04 質問[未読]
【71111】Re:スピンボタン クリシュファー 12/1/30(月) 13:06 質問[未読]
【71114】Re:スピンボタン Hirofumi 12/1/30(月) 13:25 発言[未読]
【71115】Re:スピンボタン UO3 12/1/30(月) 13:40 発言[未読]
【71121】Re:スピンボタン ちん 12/1/30(月) 18:09 発言[未読]
【71124】Re:スピンボタン クリシュファー 12/1/31(火) 9:18 質問[未読]
【71125】Re:スピンボタン UO3 12/1/31(火) 9:29 発言[未読]
【71126】Re:スピンボタン UO3 12/1/31(火) 10:55 回答[未読]
【71132】Re:スピンボタン クリシュファー 12/1/31(火) 14:36 お礼[未読]

【71110】スピンボタン
質問  クリシュファー  - 12/1/30(月) 13:04 -

引用なし
パスワード
   Private Sub SpinButton1_Change()
 
  TextBox12.Value = SpinButton2.Value
  
  SpinButton2.Min = 1000
  SpinButton2.Max = 1000000
  SpinButton2.SmallChange = 1000
        
End Sub

Private Sub SpinButton2_Change()
 
  TextBox12.Value = SpinButton2.Value
  
  SpinButton2.Min = 1000
  SpinButton2.Max = 1000000
  SpinButton2.SmallChange = 1000
        
End Sub


いつもお世話になります

上記の SpinButtonが1〜12まであるのですが、まとめた記述にできないでしょうか
宜しくお願いいたします

【71111】Re:スピンボタン
質問  クリシュファー  - 12/1/30(月) 13:06 -

引用なし
パスワード
   Private Sub SpinButton1_Change()
 
  TextBox11.Value = SpinButton.Value
  
  SpinButton1.Min = 1000
  SpinButton1.Max = 1000000
  SpinButton1.SmallChange = 1000
        
End Sub
Private Sub SpinButton2_Change()
 
  TextBox12.Value = SpinButton2.Value
  
  SpinButton2.Min = 1000
  SpinButton2.Max = 1000000
  SpinButton2.SmallChange = 1000
        
End Sub
>
>
>いつもお世話になります
>
>上記の SpinButtonが1〜12まであるのですが、まとめた記述にできないでしょうか
>宜しくお願いいたします

再投稿ですこちらが正です申し訳ありません

【71114】Re:スピンボタン
発言  Hirofumi  - 12/1/30(月) 13:25 -

引用なし
パスワード
   SpinButtonて余り使った事が無いのですが?
此れって、UserFormの話でしょ?

だとすれば、「Sub UserForm_Initialize()」で1回設定するか
デザイン画面で直接初期値設定すれば善いのでは?
そうすれば、

Private Sub SpinButton1_Change()
 
  TextBox11.Value = SpinButton.Value
          
End Sub

Private Sub SpinButton2_Change()
 
  TextBox12.Value = SpinButton2.Value
          
End Sub

だけで済むのでは?
また、やって居なので多分ですが
Changeイベントで、Min、Max、SmallChangeの各プロパティを変更すると
その都度、Changeイベントが発生する様な気がしますが?

【71115】Re:スピンボタン
発言  UO3  - 12/1/30(月) 13:40 -

引用なし
パスワード
   ▼クリシュファー さん:

記述をまとめる前に、各SpinButtonのChangeイベントで、それに紐つくTextBoxへ値を転記するのは
わかるのですが、Min,Max,SmallChangeも、Changeイベントでセットしなおしているのは
何か意図があるのでしょうか?

【71121】Re:スピンボタン
発言  ちん  - 12/1/30(月) 18:09 -

引用なし
パスワード
   ▼クリシュファー さん:こんばんわ、
みんさんこんばんわ、ちんといいます。
>Private Sub SpinButton1_Change()
> 
>  TextBox12.Value = SpinButton2.Value
>  
>  SpinButton2.Min = 1000
>  SpinButton2.Max = 1000000
>  SpinButton2.SmallChange = 1000
>        
>End Sub
>
>Private Sub SpinButton2_Change()
> 
>  TextBox12.Value = SpinButton2.Value
>  
>  SpinButton2.Min = 1000
>  SpinButton2.Max = 1000000
>  SpinButton2.SmallChange = 1000
>        
>End Sub
>
>
参考サイトとして、
【38814】Re:同種複数コントロールのイベントをま... 
 
この種の解決策は、クラスモジュールを利用するといいと思います。

角田さんの [擬似からの脱却]
ht tp://www.h3.dion.ne.jp/~sakatsu/Breakthrough_P-Ctrl_Arrays.htm

'*** イニシャライズで、初期値を設定します。
Private Sub UserForm_Initialize()
  For i1 = 1 To 2
   Controls("SpinButton" & i1).Min = 1000
   Controls("SpinButton" & i1).Max = 1000000
   Controls("SpinButton" & i1).SmallChange = 1000
  Next i1
End Sub

Sub 値セット(ByVal Index As Integer)
  Me.Controls("TextBox" & Index).Value = Me.Controls("SpinButton" & Index).Value
 
End Sub

Private Sub SpinButton1_Change()
  Call 値セット(1)

End Sub
Private Sub SpinButton2_Change()
  Call 値セット(2)

End Sub

このような感じでしょうか?参考までに・・・

【71124】Re:スピンボタン
質問  クリシュファー  - 12/1/31(火) 9:18 -

引用なし
パスワード
   ▼ちん さん:

Private Sub SpinButton1_Change()
 
  TextBox11.Value = SpinButton1.Value
  
  SpinButton1.Min = 1000
  SpinButton1.Max = 1000000
  SpinButton1.SmallChange = 1000
        
End Sub

Private Sub SpinButton2_Change()
 
  TextBox12.Value = SpinButton2.Value
  
  SpinButton2.Min = 1000
  SpinButton2.Max = 1000000
  SpinButton2.SmallChange = 1000
        
End Sub


Private Sub SpinButton2_Change()
 
  TextBox22.Value = SpinButton12.Value
  
  SpinButton12.Min = 1000
  SpinButton12.Max = 1000000
  SpinButton12.SmallChange = 1000
        
End Sub


昨日は大変失礼いたしました
風邪引いて寝込んでしまいまして・・・・

記述まで間違っておりました
上記のような感じです

回答してくださった方々大変申し訳ございません
宜しくお願いいたします

【71125】Re:スピンボタン
発言  UO3  - 12/1/31(火) 9:29 -

引用なし
パスワード
   ▼クリシュファー さん:

>Min,Max,SmallChangeも、Changeイベントでセットしなおしているのは
何か意図があるのでしょうか?

この質問に対しての回答はいかがでしょうか?

【71126】Re:スピンボタン
回答  UO3  - 12/1/31(火) 10:55 -

引用なし
パスワード
   ▼クリシュファー さん:

こんにちは

ちんさんからアドバイスがあるクラスモジュールでの対応が、本格的なものですが
12個のスピンボタンということになると、クラス仕立てにするためのコード量と
通常のコード量とでは、むしろ後者が少ないかもしれません。

あくまでご自身で判断されたらよろしいかと思いますが、私のリコメンドは以下です。

1.スピンボタンへのMin,Max,SmallChangeのセット
 これは、コードではなく、フォームのデザインで。
 SpinButton1〜12までを全て選択した状態で、左側のプロパティウインドウの
 これらプロパティに値を入れることにより、12個すべてにセットされます。
2.イベントプロシジャ

 1)以下を1つだけ記述

  Private Sub SpinButton1_Change()
    Call Spin2Txt(1)
  End Sub

 2)これをシートにコピーし、3行選択してフィルコピー。
  自動的に SpinButton2〜12までのコードが生成されるので、それをコピーして
  ユーザーフォームモジュールに貼付け。

 3)ユーザーフォームモジュールに以下を1つだけ記述。

  Private Sub Spin2Txt(id As Long)
   Me.Controls("TextBox" & id + 10).Value = Me.Controls("SpinButton" & id).Value
  End Sub

【71132】Re:スピンボタン
お礼  クリシュファー  - 12/1/31(火) 14:36 -

引用なし
パスワード
   ▼UO3 さん:

ありがとうございます
お返事遅くなりました、皆さんすごいですね

すべてうまくいきました

大変お世話になりました^^
これからも宜しくお願いいたします

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