• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのスピンボタンのコピーについて)

エクセルのスピンボタンのコピーについて

このQ&Aのポイント
  • エクセルのスピンボタンをコピーする方法
  • エクセルのスピンボタンを縦横にコピーする方法について検索して試しましたがうまくいきません。どうすればコピーできるでしょうか。
  • Windows 7のExcel2007でフォームコントロールのスピンボタンを使っています。B2セルにスピンボタンを設定し、縦1000行、横30列にコピーしたいです。設定してもうまくコピーできません。解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

下側のコードは、該当シートのモジュールに書き込みます。 上のカエルの卵みたいなやつはオススメしませんよ。 シェイプが3万個はおそらくブック自体が反応しなくなると思います。 余程高スペックなパソコンなら話は別ですが・・・

m_chance
質問者

お礼

ありがとうございます!できました!!! 仕事で使用するので困っていました。助かりましたm(__)m

その他の回答 (1)

回答No.1

スピンボタンは「リンクしたセル」を保持したまま コピー・貼り付けされてしまうので、 頑張って相当数をコピペしても徒労に終わってしまいますね。   ※スピンボタンだけではないですが・・・ スピンボタン大量配置という手法の善し悪しは別にして、 「同じコントロールを大量に配置する」という、 アクセスのレポートではよくやる手段(に似た感覚のモノ)を使います。 VBAです。 Sub Sample() Dim SpScale As Single Dim TagRow As Long, TagCol As Long Dim Target As Range   '一度すべてのシェイプを削除   For Each sh In ActiveSheet.Shapes     sh.Delete   Next   For TagRow = 2 To 5  ' 設置する行数     For TagCol = 2 To 10  '設置する列数       Set Target = Cells(TagRow, TagCol)         SpScale = Target.Height       With ActiveSheet.Spinners.Add(Target.Left + Target.Width - SpScale, _                     Target.Top, _                     SpScale, _                     SpScale)         .Name = Target.Address         .Value = 0         .Min = 0         .Max = 30000         .SmallChange = 1         .LinkedCell = Target.Address  ' ここが「リンクするセル」         .Display3DShading = True       End With       Target.HorizontalAlignment = xlCenter     Next TagCol   Next TagRow End Sub こんな感じで標準モジュールで実行してやります。 すると、画像の通り、気持ち悪いくらい全セルにスピンボタンがつきます。 3万個のスピンボタンですもんねぇ・・・(汗) ちなみに、私のパソコン、そんなに低スペックとは思っていないのですが、 3万個のスピンボタンを並べるのに15分かかりました。 下手したらフリーズするかもしれませんので、 お使いになるなら自己責任で、保存してから動かしてください。 まぁ、どちらにしてもボタンが小さすぎて使いづらい気がします。 なので、どうせVBAを使うなら、ってことで 「フォーカスに追随して、スピンボタンが移動する」 ように組み直しました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   ' 名前が"Spin1"なシェイプがあったら削除   For Each sh In ActiveSheet.Shapes     If sh.Name = "Spin1" Then sh.Delete   Next   ' スピンボタンを表示したいセル範囲はここで指定   ' 指定範囲の「外」なら何もしないで終了   If Intersect(Target, Range("B1:J5")) Is Nothing Then Exit Sub      With ActiveSheet.Spinners.Add(Target.Left + Target.Width, _                 Target.Top, _                 24, 48)  ' スピンボタンのサイズはここ                      ' なお、横, 縦で指定     .Name = "Spin1"  ' 名前は固定     .Value = Target.Value     .Min = 0     .Max = 30000     .SmallChange = 1     .LinkedCell = Target.Address     .Display3DShading = True   End With   Target.HorizontalAlignment = xlCenter End Sub これを該当シートのモジュールに書き込んでやればOK。 これだと多分、スッキリ使える・・・はず(笑)。 VBAは使えん!となったら、手作業の力業でどうぞ。

m_chance
質問者

補足

ありがとうございます! tsubu-yukiさんの画像のようにしたいのです! が、VBAが本当に苦手で・・・ 組み直していただいたのも標準モジュールに張り付ければいいんでしょうか??

関連するQ&A