[[20180604055851]] 『複数のテキストボックスとスピンボタンを連動』(k) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数のテキストボックスとスピンボタンを連動』(k)

テキストボックスとスピンボタンが複数あり、それぞれ対応しているものどうしで値を変更したいのです。またMAX19で”High” Minで”Low"と表記させたいのですが、間違いのようです。何が足りないもしくは間違いなのでしょうか?よろしくお願いします。
Private Sub Userform_Initialize()
With Worksheets("シート名”)
For j = 28 To 91
For i = 10 To 73
Me.Controls("textbox" & j).Value = Me.Controls("SpinButton" & i).Value
Next
if Me.Controls("textbox" & j).Value ="19" then
value="High"
Elseif Me.Controls("textbox" & j).Value ="-19" then
value="Low"
Endif
End With
End Sub

< 使用 Excel:unknown、使用 OS:unknown >


 おはようございます。 ^^ よく理解できていませんで恐縮ですが
2〜3気が付いた点だけ
1.変数の定義はされないのですか。
2.value は何なのでしょう。
3.エラー出ませんか。。。。nextが足りないような気が。。。。。。^^;;;
4.かなり大掛かりなシステムでしょうか、91個もテキストボックスが有るのですか。
5.同じくスピンボタンが73個ですか。
6.With Worksheets("シート名”) は何の意味があるのでしょうか。
もう少し詳しくエラー箇所、エラー名、動作などなど
説明されると、多数の回答があるかもです。
もし
91個本当にテキストボックスを配置されているのでしたら私の手にはおえません(テスト環境作れません)
他の方の回答をお待ちくださいね。
(隠居じーさん) 2018/06/04(月) 07:22

御回答ありがとうございます。
変数の定義がどう設定したらいいかまだわかりません。
エラーが出る場所はme.controls("textbox"&j).value= me.controls("spinbottun".i).valueです。
nextが足りないんですね。
withwork sheetを設定したら何か変化があるかなとやっては見たもののダメでした。知識ぐ少ない為、しどろもどろですがよろしくお願いします。
(k) 2018/06/04(月) 13:14

 何と云うエラーですか?
変数は
vba 変数定義
vba Option Explicit
何かで検索してみてください。
4.かなり大掛かりなシステムでしょうか、91個もテキストボックスが有るのですか。
はどうですか
(隠居じーさん) 2018/06/04(月) 14:05

いきなり本番に向かっても大変でしょうから、
テキストボックス2個
スピンボタン2個
で以下のコードで試してみてください。
もっとスマートに書けますが、今のあなたの力量だと、
まずは、以下のコードを理解し使えるようになることが先決かと思います。

Option Explicit

Const mcMin As Long = 1
Const mcMax As Long = 19
Dim mFlg As Boolean

'ユーザーフォームを起動した時の初期設定
Private Sub Userform_Initialize()

    Dim o As MSForms.Control
    Dim i As Long

    'スピンボタンの最小値、最大値設定
    For Each o In Me.Controls
        If TypeName(o) = "SpinButton" Then
            i = i + 1
            With Me.Controls("SpinButton" & i)
                .Min = mcMin
                .Max = mcMax
            End With
        End If
    Next
    mFlg = True
End Sub

'スピンボタンを押下して値が変わった時のイベント処理
Private Sub SpinButton1_Change()

    If mFlg = False Then Exit Sub
    SetTextBoxValue Me.SpinButton1.Value, "TextBox1"
End Sub

Private Sub SpinButton2_Change()

    If mFlg = False Then Exit Sub
    SetTextBoxValue Me.SpinButton2.Value, "TextBox2"
End Sub

'スピンボタンの値を受け取り、指定されたテキストボックスに値をセットする
Private Sub SetTextBoxValue(ByVal n As Long, _

                            ByVal tbName As String)
    Dim s As String

    Select Case n
        Case mcMin: s = "Low"
        Case mcMax: s = "High"
        Case Else: s = n
    End Select

    Me.Controls(tbName).Text = s
End Sub

ちなみに、テキストボックスやスピンボタンは、
ユーザーフォーム上に置いているのですよね?

もしかしてシート上ですか?
シート名が各コントロールとなにか関係あるのですか?

質問は
「スピンボタンの値をテキストボックスに表示するやり方」
ですよね?

動作が確認でき、
コードがある程度理解できて応用できそうなら、
本番に向かってみるといいと思います。
ちょっと、一足飛びにやりたいことが出来るようになる前に、
ある程度基礎を固めておかないと、今後もっとつらくなると思います。

(まっつわん) 2018/06/04(月) 14:18


隠居じーさんさん まっつわんさん 御回答ありがとうございます。
全てのものを配置してるのをお話すると、マルチページに1ページ目に、条件で値をコンボボックスから選択しその条件に合った値をセットするコマンドボタンがあり、2ページ目に今回質問で挙げさせてもらったスピンボタンとテキストボックスがあります。
1つずつテキストボックスとスピンボタンの値を上下するコードはわかるのですが91回コードを書くのが大変だった為質問挙げさせてもらいました。また私が設定したコードでは今は手元にパソコンがない為、エラーコードがわからないのですが、色々試してもエラー無しに反応しなかったです。
また私自身でuserform_initializeの場所にマルチページ1ページ目の内容を記入したものがあるのですがご指示されたコードを付け足せば運用できますか?
知識がないばかりで申し訳ありませんがよろしくお願いします。

(k) 2018/06/04(月) 17:12


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.