• ベストアンサー

スピンボタンのコピー

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

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

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

>C4:C1000 J4:J1000 >といったような二つの列の範囲のみで効果を発揮したいのです。 >出来る限り自分で、と思っていろいろ試しましたがうまくいきません。 >回答ありがとうございました。 >とても参考になりました。 >さっそく導入してみます。 解決したんでしょうか? 下は、最初からシートにスピンボタンを配置した場合の複数範囲のです。 targetRangeでスピンボタンの出る範囲を指定しておいてください。 シートに前もってスピンボタン(SpinButton1)を配置しておいてください。 Option Explicit Const targetRange = "C4:C1000,J4:J1000" 'スピンボタンを表示する場所 Private Sub Worksheet_SelectionChange(ByVal Target As Range) With SpinButton1 If Not Intersect(Target, Range(targetRange)) Is Nothing Then .Visible = True .LinkedCell = Target.Address .Top = Target.Top .Left = Target.Left + Target.Width Else .Visible = False End If End With End Sub 別の方法ですが、スピンボタンだと2アクションになるので、ダブルクリックと右クリックの方法です。 Option Explicit Const targetRange = "C4:C1000,J4:J1000" 'スピンボタンを表示する場所 'ダブルクリックは+1 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range(targetRange)) Is Nothing Then Target = Target + 1 Cancel = True End If End Sub '右クリックは-1 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range(targetRange)) Is Nothing Then Target = Target - 1 Cancel = True End If End Sub また、スピンボタンを出す条件を、 If Not Intersect(Target, Range(targetRange)) Is Nothing Then から If Target.Interior.ColorIndex = 6 Then に変えると、背景色が黄色のセルならスピンボタンを出すと言うのもできます。 この方法は、複数のランダムな位置のセルを指定する場合や、シートの設計が変わる場合に有効だと思います。

zebratomo
質問者

お礼

わざわざありがとうございます。 教えていただいたサイトの方法で、 If Intersect(Range("C4:H10000"), Target) Is Nothing Or Target.Cells.Count > 1 Then の部分で Union(Range("C4:C1000"),Range("J4:J1000")) のようにするとなんとかなりました。 ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

多分質問のようなたくさんのコントロールを作らなくても ワークシートSheet1に1つスピンボタンを張り付け(SpinButton1) Private Sub SpinButton1_Change() Worksheets("Sheet1").SpinButton1.LinkedCell = ActiveCell.Address Range(ActiveCell.Address).Select End Sub をSheet1のイベントプロシジュアーにつくる。 ーー 操作 カウントアップやダウンしたいセルを選択して、アクチブにする。 そしてスピンボタンをクリックする。増減することを確認してください。 別のセルをアクチブにすると、前のアクチブセルでは増減しない。 ーー Activeセルの範囲をA列等に限定して、どこのセルでも上記になることを防ぐ。 上記を改良。 Private Sub SpinButton1_Change() If ActiveCell.Column <> 1 Then Worksheets("Sheet1").SpinButton1.LinkedCell = "" Exit Sub Else Worksheets("Sheet1").SpinButton1.LinkedCell = ActiveCell.Address Range(ActiveCell.Address).Select End If End Sub アクチブセルの動きによるスピンボタンの異表示位置移動が、未実現。

zebratomo
質問者

お礼

質問の内容が正確ではなかったのに、回答いただいてありがとうございました。 いろいろ試してみることにします! VBAは完全に初心者なので、投稿いただいた内容の理解からまず始めたいと思います(^^;

回答No.2

こんなのどうでしょう。 http://www4.ocn.ne.jp/~yy3/Sub56.html 現実的です。

zebratomo
質問者

お礼

回答ありがとうございました。 とても参考になりました。 さっそく導入してみます。

zebratomo
質問者

補足

すいません、回答いただいた内容をさっそく試してみましたが、うまくいきません…。 教えていただいたマクロですと、C4:H10000 というような範囲ですが、 C4:C1000 J4:J1000 といったような二つの列の範囲のみで効果を発揮したいのです。 出来る限り自分で、と思っていろいろ試しましたがうまくいきません。 自分はVBA初心者でなにもわかってないようです…。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

やりたいこと(ご質問の内容)があまり良く理解できないのですが、VBAを使用すれば可能ではないでしょうか? ただ、スピンボタンにこだわるような事ではないかもしれませんね。どうしてもスピンボタンがいいと言うのでなければ、もっと簡単な方法がありそうです。 全体的な動作や、どのようなものが必要なのか教えてください。

zebratomo
質問者

補足

ご回答ありがとうございます。 質問内容が適切でなくて、すいません…。 たとえば、1000種類ほどの商品等があって、それがいちいち増える(減る)ごとに数を記録したい、ということです。 前までは直接数字を打ち込んでいたのですが、スピンボタンがいいかと思って改良しているところです…。 A列などに商品項目名、B列にスピンボタン、C列にその数、といった具合です。 スピンボタンにこだわるわけではありませんが、利便性と正確性が上がる方法を模索中です! よろしくお願いします。

関連するQ&A

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

    エクセルのスピンボタンのコピーについて いろいろ検索し、試しましたがうまくいきません。 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を使用しています。

  • エクセルのスピンボタンで%は使える?

    エクセルのスピンボタンで、値の増減を0~100%まで5%きざみで、増減させたいのですが、 セルの値をパーセント表示にしており、スピンボタンを押すと、100%きざみでしか増減できません。 良い方法はないでしょうか。

  • スピンボタンのリンクするセルを相対的に指定する方法

    現在、Excel2010を使って、タッチパネルを想定した処理表を作っているのですが、 一つ問題に当たっています。 スピンボタンを作成し、ボタンを押すとその右隣のセルの数値が増減されるようにしたいのですが、 コントロールの書式設定でリンクするセルを設定しても、絶対参照になり、 他の場所にスピンボタンを移した時や、大量にスピンボタンをコピーした時に、 その都度、参照先を変更しなければならず、思い通りのシステムを構築できません。 どなたか、ボタンをどの場所に移動しても、また、大量にコピーをしても 必ずその右隣の数値が変更できるように、リンクするセルを相対的に指定する方法を ご存知ないでしょうか?よろしくお願いします。m(_ _)m

  • Excel スピンボタンの対象範囲

    Excel2003での質問なのですが、 スピンボタンのリンク先を複数のセルに指定したいのですが、やり方がわからずに困っています。 具体的には 3つのセルの値を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まで文字を変えて複数回実行する方法しかできないのですが、なにか良案ありますでしょうか? 宜しくお願い致します。

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

    エクセルにて、フォームで配置した、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、マクロに関しては、マクロの記録を訂正して使う程度の知識です。

  • 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つなら簡単にリンク先として指定できたのですが、複数選択するとエラーになってしまいます。 どうしたらいいでしょうか? やはりマクロ等を組まないといけないのでしょうか? 方法を知っている方がいらっしゃいましたら教えていただけると嬉しいです。 よろしくお願いします。

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

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

  • エクセル(スピンボタン設定)について

    スピンボタンを利用したいと思っているのですが、リンクするセルが結合しているセルだと、数値が表示されません。 結合していないセルだと問題ないのですが、結合しているセルには設定できないのでしょうか。 どうすれば、結合したセルに設定できるのか教えて下さい。 よろしくお願いします。

専門家に質問してみよう