- ベストアンサー
(VBA)スピンボタンの大量コピー(相対参照)
お世話になります。質問させていただきます。 表題件ですが、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に変更したく考えております。 何卒よろしくお願い申し上げます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 たぶん、#1さんのアドバイスで、コントロールツールを連続で作ることは可能ですが、問題は、その後のことです。設計をお決めになるのは、sdfghさんご自身ですが、これに、チェックボックスと連動させることを考えれば、かなりややこしくなるはずです。コントロールツールは、OnAction には入れられないはずですし、また、Application.Caller が利きません。個々にマクロを付けるのは大変ですから、それで、前回、フォームツール側を選んだわけです。 なお、サンプルコードは、少し雑な内容のようです。
その他の回答 (1)
- xls88
- ベストアンサー率56% (669/1189)
スピンボタンを挿入する操作を「マクロの記録」をしてみましょう。 違いがわかります。 classtype:="Forms.SpinButton1." は記述ミスをしています。「.」の位置が違います。 classtype:="Forms.SpinButton.1" としてください。 スピンボタンのプロパティを見れば分かると思いますが スピンボタンには、Captionはありません。 Min、Maxを設定された方が良いと思います。 増減値は、SmallChangeです。
お礼
ご回答誠にありがとうございます。 ご指摘されたとおり修正したところ、成功しました。 感謝申し上げます。
お礼
質問文を超えた次元で、私の意を汲んでいただき大変感激しています。 お蔭様で、Wendy02様が別件にてご回答くださりましたコードで解決いたしました。