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

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

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

エクセルのスピンボタンのコピーについて いろいろ検索し、試しましたがうまくいきません。 A2セルに氏名(A3,A4と下に1000人程います) B1セルに日付(C1,D1と右に1ヶ月分) B2セルにスピンボタンを設定し、そのスピンボタンを縦1000行、横30列にコピーしたいのですが うまくいきません。。。 佐藤さんが12/1に3回⇒セルB2へ「3」 山田さんが12/2に5回⇒セルC3へ「5」 という感じで表示させたくて、B2へスピンボタンを設定しコピーしたのですがうまくいきません。 どうしたらできるでしょうか。 スピンボタンはフォームコントロールのものを使用しています。 Windows 7 Excel2007を使用しています。

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

  • ベストアンサー
回答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

  • 1つのスピンボタンで複数のセルの数字を変更

    Excel2003での質問なのですが、 スピンボタンのリンク先を複数のセルに指定したいのですが、やり方がわからずに困っています。 具体的には 3つのセルの値を1つのスピンボタンで加減するように組みたいのです A1 B1 C1 ▲ 1  5  6 ▼ A1、B1,C1を個々で+-するスピンボタンを作りたいのですが よろしくお願いします

  • Excel スピンボタン 対象範囲(訂正)

    http://oshiete1.goo.ne.jp/qa4685879.htmlの訂正版です。 説明が不十分だったため変更します。 Excel2003での質問なのですが、 スピンボタンのリンク先を複数のセルに指定したいのですが、やり方がわからずに困っています。 具体的には 3つのセルの値を1つのスピンボタンで加減するように組みたいのです。 3つのセルの値は違うもので、=で繋げたくはありません。 A1 B1 C1 ▲ 1  5  6  ▼ ↑の状態で「▲」を押すと A1 B1 C1 ▲ 2  6  7  ▼ になる物を作りたいです。 (1)A1、B1,C1を個々で+-するスピンボタンと (2)A1、B1、C1を一括で+-するスピンボタンを作りたいのです。 (1)は作れたのですが(2)のやり方がわかりません。 1つなら簡単にリンク先として指定できたのですが、複数選択するとエラーになってしまいます。 どうしたらいいでしょうか? やはりマクロ等を組まないといけないのでしょうか? 方法を知っている方がいらっしゃいましたら教えていただけると嬉しいです。 よろしくお願いします。

  • スピンボタンのコピー

    よろしくお願いします。 ある項目の数を数えるのに、スピンボタンを利用しています。 増えたり減ったりするごとにすぐ横の列にあるスピンボタンを押し、増減させています。 ただ、なにぶん数が多くて、いちいちコピーして、リンク先のセルを手動で入力したりするのが面倒です…。 数百項目分のスピンボタンをコピーし、1行から数百行分までリンク先もバッチリコピー! という方法はないでしょうか?

  • excel スピンボタンのサイズについて

    excel2010利用です。よろしくお願いします。 下記の通り、各セルにリンク対応したスピンボタンが出来るようなマクロを作ってみました。(セルC4から始まって下に31セル分スピンボタンが作成される) しかし各一つのセルの大きさが小さいためか、スピンボタンでセルが埋め尽くされてしまいます。 スピンボタンのサイズを 幅:ギリギリまで小さく 高さ:セルの高さちょうど といった大きさに調整する方法はありますでしょうか? 対応セルはみな同じ大きさです。 ご意見ご教授のほどよろしくお願いします。 Sub test() Dim i As Integer Rows.RowHeight = 50 For i = 4To 34 With ActiveSheet.Spinners.Add(Range("c4").Left, Range("c" & i).Top, 20, 50) .LinkedCell = "c" & i End With Next End Sub ちなみに、C列から、AL列まで(C4からAL34まで)スピンボタンを作りたいと思っており、 私、まだVBA未熟なため現段階では、 上記のマクロをCからALまで文字を変えて複数回実行する方法しかできないのですが、なにか良案ありますでしょうか? 宜しくお願い致します。

  • エクセル・スピンボタンを使った時にイベントマクロを発生させたい

    エクセルでスピンボタンを使って数値を上下させたときに イベントマクロを発生させたいです セルC1の入力規則のリストから氏名を選択するとグラフが表示されるのですが いちいちリストから選択するのが面倒なので スピンボタンでリストの上から順番に見ていけるようにもしたいのです スピンボタン(セルA1にリンク)を操作 A1…スピンボタンにリンクして数字が変わる B1…INDEX関数でA1の数字とリストから氏名が選択される B1の値をC1に貼り付ける←ここをマクロにしたい イベントマクロで Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub Range("B1").Copy Range("C1").Select ActiveSheet.Paste End Sub としてもうまくいきません スピンボタンにリンクしたセルの値が変わったと時は Worksheet_Changeだと無理なので、どうしたらいいでしょう わかりにくい説明で申し訳ありません

  • エクセルスピンボタンの保護解除

    エクセルスピンボタンの保護解除について教えてください。 エクセル2003を使用しています。 (やりたい事) ・シートの保護 ・ですが、スピンボタンは使えるようにしたい。 (やった事) ・A1のセルにリンクするようにA1のセルの右横に、(表示→ツールバー→フォーム→スピンボタンを選び)スピンボタンを置きました。 ・スピンボタンのコントロールの書式設定→保護のチェック外しました。 ・ツール→範囲編集の許可→$A$1:$K$10をロック解除としました。 ・ツール→シートの保護→ロックされたセル範囲の選択とロックされていないセル範囲の選択にチェックを入れてOKを押しました。 ・ロックされたセル範囲の選択とロックされていないセル範囲のどちらか選ぶと両方選択されます。 (不具合) ・シートの保護をするとスピンボタンも使えなくなりました。 (質問) $A$1:$K$10とスピンボタン以外を保護したいのですが、 このような場合、私のやり方がおかしいのでしょうか? どなたか、教えて頂けませんか? 宜しくお願いします。

  • エクセルで作成した一覧表をカード形式にしたい。

    エクセルで作成した一覧表をカード形式にしたいのですが 例えばsheet1の 列1のセルA、B、C、D、E、Fに 山田さんの住所、氏名、年齢、職業、電話、備考 列2にセルA、B、C、D、E、Fに 佐藤さんの住所、氏名、年齢、職業、電話、備考、 列3にセルA、B、C、D、E、Fに 大山さんの… (以降は同様の繰り返し)を入力したとき、 sheet2の 列1のセルA、Bに山田さんの住所、氏名、 列2のセルA、Bに山田さんの年齢、職業、 列3にセルA、Bに山田さんの電話番号、備考、 列4にセルA、Bに佐藤さんの住所、氏名、 列5にセルA、Bに佐藤さんの年齢、職業、 列6にセルA、Bに佐藤さんの電話番号、備考、 列7にセルA、Bに大山さんの住所、氏名、 列8にセルA、Bに大山さんの年齢、職業、 列9にセルA、Bに大山さん電話番号、備考、 列10… と表示されるようにしたいのですが sheet2のA1、B1、A2、B2、A3、B3セルに数式を入力し 列4以降にコピーしても飛び飛びになってうまくいきません。 入力規則かと6列目まで増やしてコピーしても 7列目以降に正しくコピーできません。 何か関数が必要なのでしょうか?過去の質問も検索しましたが よく分かりません。よろしくお願いします。

  • スピンボタンの最大値を、増分にあわせて変化させたい

    エクセルにて、フォームで配置した、3つのスピンボタンの最大値を、他のボタンの増減や、初期値によって変化させたいと考えています。    A  |    B     |   C  | D  | 【初期値】|【リンクするセル】|【最大値】|【A+B】|ボタン 【初期値】|【リンクするセル】|【最大値】|【A+B】|ボタン 【初期値】|【リンクするセル】|【最大値】|【A+B】|ボタン      |【Bの合計】    | 【振り分けれる最大値】 例)    A  |   B   |  C  | D  |  50  | 1    | 49 | 51|  60  |      | 49 | 60|  50  | 50   |  0 |100|      | 51   |  49 元の最大値=100、振り分けれる最大値=100のとき、B1に1、B3に50振り分けるようにスピンボタンを動作させたときに求められる最大値C1~3にあわせてスピンボタンの最大値を変更させて指定し、それを超えて入力できないようにすることはできないでしょうか? 当方、WinXP、エクセル2003、マクロに関しては、マクロの記録を訂正して使う程度の知識です。

  • Excel マクロでスピンボタンの操作

    A1とB1のセルには、それぞれ数値が入力されています。 その下(A2とB2)にはA1とB1の値を使って計算された値があります。 A1とB1の値はスピンボタンを使って1ずつ値が大きくなったり小さくなったりします。 そして、 A2とB2の値の大小を比べて、 ・A2が小さければ、A1の値を1大きくする ・B2が小さければ、B1の値を1大きくする ・等しければ、何もしない ということをしたいです。 マクロを組むしかないと思ったのですが、どのようにやれば良いのでしょうか? Excelはそこそこできますが、マクロはほとんどわかりません。 スピンボタンを使わなくても、同じようなことが自動でできれば構いません。 よろしくお願いしいます。

  • エクセル スピンボタンの設定方法 広範囲セル

    販売業をやっております。 時間帯別の集客人数表をエクセルで作り、人数をクリックで増減(増だけで問題ないです)させたいと思っております。 使用しているエクセルのバージョンは2002です。 インターネットで調べ、スピンボタンという機能を使えば出来そうだというところまでは行きました。 B3セル~H27まで広範囲にセルを設定し、それぞれ1つごとのセルにスピンボタンの機能を反映させたいと思っております。 自分で作ってみたのですが、特定の1セル(B3)しかボタンのクリックに反映されなく、正しい設定方法を知りたいと思っております。 ※設定方法に関して、”スピンボタン→コントロールの書式設定→リンクするセル”で広範囲にセルを設定しても1つのセルしかボタンに反映されない状態です。 自身で調べたのですが解決できなかったため、詳しい方いらっしゃいましたらアドバイスお願い致します。 表は現物を見て頂いたほうが早いかと思い添付しております。 どなたかアドバイス宜しくお願い致します。

専門家に質問してみよう