VBA勉強中の者です。Excel2002を使用しております。
以前こちらのサイトで「特定セルに入力された数値を基に、別のセルの色を変える方法」を
ご教示頂きまして(http://okwave.jp/qa/q6345375.html)、今度はそれを発展させたいと思い
フォーム、スピンボタンの使用を試みました。
試行錯誤しましたが残念ながら動作させる事が出来ませんでした。
目的の動作
フォームのスピンボタンを設置、リンクを”=A1”に指定し、ボタン操作でセルA1の数値をボタン入力。
その数値に合わせてセルB1:B6のカラーを変化させたい。
作成したコード
Private Sub Worksheet_Change(ByVal Target As Range)
Dim mycolor As Range
Dim boxcolor As Range
Set mycolor = Intersect(Target, Range("A1"))
Set boxcolor = Range("B1:B6")
If Not mycolor Is Nothing Then
Select Case Target.Value
Case Is = 1
boxcolor.Interior.ColorIndex = 3
Case Is = 2
boxcolor.Interior.ColorIndex = 4
Case Is = 3
boxcolor.Interior.ColorIndex = 5
Case Is = 4
boxcolor.Interior.ColorIndex = 6
Case Is = 5
boxcolor.Interior.ColorIndex = 7
Case Is = 6
boxcolor.Interior.ColorIndex = 8
Case Is = 7
boxcolor.Interior.ColorIndex = 9
Case Is = 8
boxcolor.Interior.ColorIndex = 10
Case Is = 9
boxcolor.Interior.ColorIndex = 11
Case Is = 10
boxcolor.Interior.ColorIndex = 12
Case Is = 11
boxcolor.Interior.ColorIndex = 13
Case Is = 12
boxcolor.Interior.ColorIndex = 14
Case Else
boxcolor.Interior.ColorIndex = xlAutomatic
End Select
End If
End Sub
スピンボタンの入力に合わせてセルA1の数値が増減する事は確認しましたが、
それに伴いB1:B6のセルカラーが変化しません。
また、スピンボタンを使用して数値を入力したあと、セルA1を一度アクティブ(F2を押す)にして
解除すると、唐突にしかし正常に動作します。
スピンボタンを使わずにセルA1に直接数値を入力すると、これも問題なく動作します。
以上の状況からスピンボタンを使用しセルA1に入力された数値のみが認識しないように思えます。
色々と調べて見たところ、SpinButton Changeイベントというものを使用する?と見当をつけ、
単純な発想ですがSpinButton1_Changeプロシージャへ上記のコードを入力してもやはり動作しません。
私のレベルでは既に手詰まりになってしまい、お手数ですがご指導頂きたくお願い致します。
リンクで指定したセルのデータが変更されてもChangeイベントは走らないようです
フォームのコントロールの場合は コントロールを選択しておいて右クリック
マクロの登録 > 新規作成 で行います
VBEが立ち上がると
Sub スピン1_Chage()
End Sub
となると思います
ココを
Sub スピン1_Chage()
dim r as Range, n as Integer
Set r = range("A1")
n = r.value
r.value = n
End Sub
といった具合にして ワークシートのChangeイベントが走るようにしてみましょう
質問者
お礼
早速のご回答有難う御座います。
にも関わらずお礼が遅れてしまいまして申し訳ありません。
こちらのコードにて目的の通りに動作する事を確認しました。
有難う御座います。
スピンボタン→シートへ数値入力ではダメだったのですね。
こちらのマクロのコードを私なりに解釈してみました。
無知なので正しく理解出来たか不安ですが、
n = r.value
r.value = n
の部分でシートに入力しており、この方法であれば認識してくれるのですね。
今後もオブジェクトは多用したいので、この方法を学べた事は私にとって大きなプラスです。
大変に有難う御座いました。
目的が達成されましたのでこれにてご回答を締め切らせて頂きます。
ご覧下さった方々、有難う御座いました。
どうしても分からない事はまた質問すると思いますが、その時はまたご教示お願い致します。
お礼
早速のご回答有難う御座います。 にも関わらずお礼が遅れてしまいまして申し訳ありません。 こちらのコードにて目的の通りに動作する事を確認しました。 有難う御座います。 スピンボタン→シートへ数値入力ではダメだったのですね。 こちらのマクロのコードを私なりに解釈してみました。 無知なので正しく理解出来たか不安ですが、 n = r.value r.value = n の部分でシートに入力しており、この方法であれば認識してくれるのですね。 今後もオブジェクトは多用したいので、この方法を学べた事は私にとって大きなプラスです。 大変に有難う御座いました。 目的が達成されましたのでこれにてご回答を締め切らせて頂きます。 ご覧下さった方々、有難う御座いました。 どうしても分からない事はまた質問すると思いますが、その時はまたご教示お願い致します。