excel2000でVBEにてユーザフォームを作りました。そのフォームの中にスピンボタンがあります。スピンボタンのプロパティsmallchangeにて増減値を変えることができるのは知っているのですが、整数しか選択できないようです。作成した当初はデフォルトの1ずつの増減で問題なかったのですが、0.1ずつ増減させる必要が出てきました。どのようにすればよいのでしょうか。excel97なら以下のサイトに方法がかかれていますが、当方excel2000な上に、記述された内容が理解できません。
http://support.microsoft.com/kb/151498/ja
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
値を表示したいコントロール.value=スピンボタン.value / 10
というコードを書くよう提案したのは、スピンボタンのValueは整数値に限られているからです。
ここでやっていることは、スピンボタンの値が585のとき、値を表示したいコントロールの値は58.5ということにしましょうということです。
したがって、値を表示したいコントロールのChangeイベントでは、
スピンボタン.value = 値を表示したいコントロール.value * 10
としないと、スピンボタンの値が、決めたルールに従ったように変わりません。
Raistlin様、大変ありがとうございます。
私が期待していた動作が実現できました。
私がやりたかったことは基本が分かっていれば簡単なことだったんですね。私が持っている入門書の説明は分かり難いです。Raistlin様の説明でばっちり理解できました。
本当にありがとうございました。
No.6
- 回答日時:
こんばんは。
単に、TextBox がきちんと数値が入れられるようにしてあれば、後は、以下のようにすればよいのではありませんか?
Private Sub SpinButton1_SpinDown()
TextBox1.Text = CStr(Val(TextBox1.Text) - 0.1)
End Sub
Private Sub SpinButton1_SpinUp()
TextBox1.Text = CStr(Val(TextBox1.Text) + 0.1)
End Sub
値を確保するのは、TextBoxですから、単に、SpinButton の上下のイベントだけがあれば、それでよいのだと思うのですが……。
Wendy02様、ありがとうございます。
なるほど、このような方法もあるのですね。非常に参考になります。
私の持っている入門書以上のことは考えもつかないので、Changeイベントでしかできないものと考えていました。SpinUp/Downイベントの使い方が理解できました。
本当にありがとうございました。
No.5
- 回答日時:
よく検証していませんが
下記ではどうでしょう
まだエラー処理が抜けてるかもです。
Option Explicit
Dim myT As Double
'------------------------------------------
Private Sub SpinButton1_Change()
Dim myAns As Double
If Me.TextBox1.Value = "" Then Exit Sub
If IsNumeric(TextBox1.Value) = False Then
myT = 0
Me.SpinButton1.Value = 0
Exit Sub
End If
myAns = Me.SpinButton1.Value / 10
Me.TextBox1.Value = myT + myAns
End Sub
'------------------------------------------
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.TextBox1.Value = "" Then Exit Sub
If IsNumeric(TextBox1.Value) = False Then
myT = 0
Me.SpinButton1.Value = 0
Exit Sub
End If
myT = CDbl(Me.TextBox1.Value)
End Sub
'------------------------------------------
Private Sub UserForm_Initialize()
With Me.SpinButton1
.Max = 200
.Min = -200
End With
End Sub
Kasouken様、ありがとうございます。
今回の私がやりたかったことは、Raistlin様の回答で解決いたしました。
このコードを理解するには大変時間がかかりそうです。
今後の勉強に使わせてもらいます。
また、分からないことがあった時はよろしくお願いいたします。
No.3
- 回答日時:
TextBoxの値をSpinButtonに入れる必要があるのですか?
この回答への補足
Kasouken様、ありがとうございます。
上記の質問は、
Private Sub Txt月_Change()
Spn月 = Txt月
End Sub
が必要ないのではと言うことでよろしいでしょうか。試しに上記コードを削除してみましたが、上記コードがないと、スピンボタンのMin値からいつもスタートすることになるようです。これではちょっと困るのです。
実は、VBAの勉強のために今まで手入力していた日々の体重測定値を、ユーザフォームを使ってやろうとしているのです。それくらいのことにVBA(ユーザフォーム)がいるのかという意見が当然出てくると思いますが、あくまでもVBAの勉強のためです。それで出来上がったものがスマートなものならば、それで手入力の手間が少しでも省けるだろうと考えています。
それで、普通の人なら日々の体重に大きな変化がないと思いますし、変化量も0.1kg単位だと思います。さらに、私の体重だけではなくて家族の分も対応できるようにしたいと思っています。ここで上記コードがないと、スピンボタンのMin値からいつもスタートすることになるので、私の体重だけならMin値の設定を調節すればMin値から0.1kgずつ増やしていく手間はそんなに感じないかもしれませんが、私と20kg以上離れた家族の分をカバーするとなると、手入力の方が早いという結論になりますし、体重の変化に合わせてMin値を設定し直すというのも汎用性に欠けるので、各人の前日の体重をtextboxの値に設定したいと思っています。とりあえずは一人分の入力環境を整えたいと考えています。
皆様に何とか知恵をお借りしたいと思っています。
よろしくお願いいたします。
No.1
- 回答日時:
スピンボタンのChangeイベントに、
値を表示したいコントロール.value=スピンボタン.value / 10
を記述すればよいのではないでしょうか。
提示のURLは0.1刻みではなく0.25刻みとするときのやり方が書いてありますが、コントロールへのマクロの登録の仕方が異なります(覚えなくて良いと思います)。
Raistlin様、回答ありがとうございます。
お礼と質問の補足です。
あるVBAマクロの入門書に日付をスピンボタンでテキストボックスに入力する方法が書かれています。以下、その抜粋です。Txt月はテキストボックスのオブジェクト名、Spn月はスピンボタンのオブジェクト名です。MyDate、MyMonthは変数です。
Private Sub Spn月_Change()
Txt月 = Spn月
End Sub
Private Sub Txt月_Change()
Spn月 = Txt月
End Sub
Private Sub UserForm_Initialize()
MyDate = Date
MyMonth = Month(MyDate)
Txt月.Text = MyMonth
End Sub
これを参考にこれまでは1ずつの増減で問題なく使っていました。
Raistlin様のアドバイス通り、試しにスピンボタンのChangeイベントTxt月 = Spn月の部分をTxt月.Value = Spn月.Value / 10としたところ、以下のエラーが発生し、デバッグにてテキストボックスのChangeイベントSpn月 = Txt月が黄色でクローズアップされました。
「実行時エラー'380':
Valueプロパティを設定できません。プロパティの値が不正です。」
各式の値を確認したところ、
スピンボタンのChangeイベントにて
Txt月.Value = "0.1"
Spn月.Value = 1
Txt月.Value = Spn月.Value / 10なので問題ないと思われます。
テキストボックスのChangeイベントにて
Spn月 = 1
Txt月 = "0.1"
Spn月 = Txt月となっていません。なぜ、Txt月の値がSpn月に代入されないのでしょうか。
入門書以上の内容に対してはお手上げです。皆様の助けが必要です。
どのようにこの問題を解決すればよろしいのでしょうか。どうかよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで指定したセルの増減ボタンを作りたい 2 2022/12/02 11:03
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) vba フォーム軽量化 1 2022/09/07 18:59
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- 政治 世界では核戦争が心配されているのに、自民党は自分の選挙区のことで頭の中が一杯ですか? 8 2022/10/12 11:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
- Excel(エクセル) Excel 2013 フォームについて 1 2022/10/26 09:35
- Excel(エクセル) 棚卸表の前月比の関数等あれば教えてください 2 2023/05/02 18:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
彼女のことが好きすぎて彼女の...
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
小数点以下を繰り上げたものを...
-
ある範囲のセルから任意の値を...
-
エクセル指定した範囲からラン...
-
EXCELで条件付き書式で空白セル...
-
リンク先のファイルを開かなく...
-
これって喉仏ですか? 私は女性...
-
EXCELで式からグラフを描くには?
-
【Excelで「正弦波」のグラフを...
-
精子に血が・・・
-
Excelで""で囲む方法
-
エクセルのグラフで、値0のとき...
-
風俗店へ行く前のご飯
-
値が入っているときだけ計算結...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
精子が黄色?
-
EXCELで条件付き書式で空白セル...
-
至急!尿検査前日にオナニーし...
-
これって喉仏ですか? 私は女性...
-
中出しをするとお腹が痛い・・・。
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
尿検査前日に自慰行為した時の...
-
EXCELで式からグラフを描くには?
-
小数点以下を繰り上げたものを...
-
ある範囲のセルから任意の値を...
-
口の中に黒い血の塊
-
【Excelで「正弦波」のグラフを...
-
エクセル指定した範囲からラン...
おすすめ情報