プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。質問させていただきます。

表題件ですが、EXCELにて
「A列にコントロールツールの"スピンボタン"をリンクセルを相対参照にして縦に大量にコピー(さらに増減値をデフォルトの1から10に変更)」したいと考えています。

以下に記載したVBAコードは、こちらと同様のQ&Aサイトにて見つけてきた「A列にコントロールツールの"チェックボックス"をリンクセルを相対参照にして縦に大量にコピー」するコードです。

先ずは参考までにご確認ください。
-----------------------------------------------------------------
Sub Checkbox連続作成()
Dim myChk As Object
Dim i As Long
Dim Sakuseisuu As Long
Dim StartCell As Range

'--------↓ここを変更---------
Sakuseisuu = 20 'チェックボックスの作成数

Set StartCell = Range("A1") 'スタートする位置
'--------↑ここを変更---------

For i = 0 To Sakuseisuu - 1
With StartCell.Offset(i)
Set myChk = ActiveSheet _
.OLEObjects.Add(classtype:="Forms.CheckBox.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=.Left, Top:=.Top, _
Width:=.Width, Height:=.Height)
End With
With myChk
.LinkedCell = StartCell.Offset(i, 1).Address
.Object.Caption = ""
.Object.Value = False
End With
Next
End Sub

------------------------------------------------------------------

上記コードを参考に、「A列にコントロールツールの"スピンボタン"をリンクセルを相対参照にして縦に大量にコピー」すべく、コードを以下のように短絡的に書き換えてみましたが、エラーとなってしまいます。

------------------------------------------------------------------
Sub SpinButton連続作成()
Dim myspin As Object
Dim i As Long
Dim Sakuseisuu As Long
Dim StartCell As Range

'--------↓ここを変更---------
Sakuseisuu = 20 'チェックボックスの作成数

Set StartCell = Range("A1") 'スタートする位置
'--------↑ここを変更---------

For i = 0 To Sakuseisuu - 1
With StartCell.Offset(i)
Set myspin = ActiveSheet _
.OLEObjects.Add(classtype:="Forms.SpinButton1.", _
Link:=False, DisplayAsIcon:=False, _
Left:=.Left, Top:=.Top, _
Width:=.Width, Height:=.Height)
End With
With myspin
.LinkedCell = StartCell.Offset(i).Address
.Object.Caption = ""
.Object.Value = False
End With
Next
End Sub
------------------------------------------------------------------

お詳しいかたがおられましたら、是非ともアドバイスを頂戴したく存じます。

さらにわがままを述べると、増減値をデフォルトの1から10に変更したく考えております。

何卒よろしくお願い申し上げます。

A 回答 (2件)

こんにちは。



たぶん、#1さんのアドバイスで、コントロールツールを連続で作ることは可能ですが、問題は、その後のことです。設計をお決めになるのは、sdfghさんご自身ですが、これに、チェックボックスと連動させることを考えれば、かなりややこしくなるはずです。コントロールツールは、OnAction には入れられないはずですし、また、Application.Caller が利きません。個々にマクロを付けるのは大変ですから、それで、前回、フォームツール側を選んだわけです。

なお、サンプルコードは、少し雑な内容のようです。
    • good
    • 0
この回答へのお礼

質問文を超えた次元で、私の意を汲んでいただき大変感激しています。
お蔭様で、Wendy02様が別件にてご回答くださりましたコードで解決いたしました。

お礼日時:2009/01/14 23:21

スピンボタンを挿入する操作を「マクロの記録」をしてみましょう。


違いがわかります。

classtype:="Forms.SpinButton1."
は記述ミスをしています。「.」の位置が違います。
classtype:="Forms.SpinButton.1"
としてください。

スピンボタンのプロパティを見れば分かると思いますが
スピンボタンには、Captionはありません。
Min、Maxを設定された方が良いと思います。
増減値は、SmallChangeです。
    • good
    • 0
この回答へのお礼

ご回答誠にありがとうございます。
ご指摘されたとおり修正したところ、成功しました。
感謝申し上げます。

お礼日時:2009/01/14 23:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています