• ベストアンサー

VBAで作れるかな?

エクセルVBAで、 スタートボタンを押すと値の入ってるセルを自動的に移動していって、ストップボタンを押すと止まる。 そんなルーレットみたいなものって作れますか???

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

ストップボタンはないけれど、こんなの作ってみました。 まっさらなワークシートで試してみてください。 Sub ルーレット() Range("B3:K9").Select With Selection .Font.Name = "Arial Black" .Font.Size = 20 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter With .Borders .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom End With ActiveWorkbook.Names.Add Name:="table", RefersTo:=Selection n = 0 For Each c In Range("table") n = n + 1 c.Value = n Next For i = 1 To 2 For Each c In Range("table") c.Select For m = 20 To 3 Step -1 Selection.Interior.ColorIndex = m Next m Range("table").Interior.ColorIndex = 0 Next c Next i Randomize x = Int(Rnd * 70) + 1 For Each c In Range("table") c.Select For m = 20 To 3 Step -1 Selection.Interior.ColorIndex = m Next m Range("table").Interior.ColorIndex = 0 If c.Value = x Then Selection.Interior.ColorIndex = 3 Exit Sub End If Next c End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

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

ワークシートSheet1にオートシェイプの中から太い矢印を貼り付けました。 「オートシェイプ 2」という名前でした。 もうひとつ、コマンドボタンを貼り付けました。 Sheet1のコマンドボタンのクリックイベントに Private Sub CommandButton1_Click() Worksheets("sheet1").Range("a1").Activate For i = 2 To 10 t0 = Timer Do While Timer < t0 + 1 DoEvents 'ActiveSheet.Cells(i - 1, "A") = "" 'Cells(i, "A") = "A" Worksheets("sheet1").Shapes("オートシェイプ 2").Left = i * 50 Loop Next i End Sub を貼り付けます。 ボタンをクリックするとかくかくと10秒間、矢印が動いていきます。 スムーズにするには1秒をもっと短くする。 太い矢印を、イメージのピクチャなどに変える。 とめるのはとめるフラグを聞いていて、ONならシェイプをDeleteする。コンなのはどうでしょう。やはり道具立ての力不足ですね。 オフィス系などでなく・エクセルVBA以外のプログラム言語に目を向けられることを。

全文を見る
すると、全ての回答が全文表示されます。
  • moooon
  • ベストアンサー率26% (26/98)
回答No.6

No5です。こっちのほうがいいかも Sub ルーレット開始() Cells(1, 1) = "" Range("B3:K9").Select With Selection .Font.Name = "Arial Black" .Font.Size = 20 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter With .Borders .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom End With ActiveWorkbook.Names.Add Name:="table", RefersTo:=Selection Range("table").Interior.ColorIndex = 0 n = 0 For Each c In Range("table") n = n + 1 c.Value = n Next Do For Each c In Range("table") c.Select If Cells(1, 1) = "stop" Then Selection.Interior.ColorIndex = 3 Exit Sub End If DoEvents Next c Loop End Sub Sub ルーレットSTOP() Cells(1, 1) = "stop" End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • moooon
  • ベストアンサー率26% (26/98)
回答No.5

No4さんのをそのまま拝借してストップボタンを付けてみました。 Sub ルーレットSTART() Cells(1, 1) = "" Range("B3:K9").Select With Selection .Font.Name = "Arial Black" .Font.Size = 20 .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter With .Borders .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom End With ActiveWorkbook.Names.Add Name:="table", RefersTo:=Selection n = 0 For Each c In Range("table") n = n + 1 c.Value = n Next Do While Cells(1, 1) = "" For Each c In Range("table") c.Select If Cells(1, 1) = "stop" Then Selection.Interior.ColorIndex = 3 Exit Sub End If DoEvents Range("table").Interior.ColorIndex = 0 Next c Loop End Sub Sub ルーレットSTOP() Cells(1, 1) = "stop" End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.3

再びこんにちは。 VBAからワークシートをいじる場合、VBで言うところのタイマーコントロールが使えません。 従って、スタートボタンを押したらループでグルグル回し、その間にストップボタンも受け付け、ストップされたらループから抜けるという処理になるはず。 答えを言えば、ループの中で DoEvents を発行してやれば済むと思います。 しかしスピードの調整等、結構シビアかもしれませんね。

全文を見る
すると、全ての回答が全文表示されます。
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.2

もちろん作れます。 ただちょっとコツがいるかもしれません。

de_la_monkey
質問者

お礼

回答有難うございます。 コツとは?

全文を見る
すると、全ての回答が全文表示されます。
  • 6dou_rinne
  • ベストアンサー率25% (1361/5264)
回答No.1

可能です。 しかもそう難しくもないでしょう。

de_la_monkey
質問者

お礼

回答有難うございます。 実際どうやればいいですか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのVBAで教えてください

    エクセルのVBAで教えてください、セルA1の値をマクロボタンを押すたびに、セルC1から順番にC2・C3・C4・・・・と下に自動的に入力するVBAを教えてください。

  • vbaでvlookup

    エクセルのVBAについて。 指定した範囲の中から検索条件に一致したデータを検索し、取り出してくれる関数vlookup をVBAで実現したいのですが、 目標として、エクセルのセル(列)に、値を入力されているとします。 VBAを実行するボタンをクリックすると、、、 その値に対応する文字列(事前に用意)をその値の右のセルに自動で入力させたいです。 このVBAを作ることが目標です。 vbaでvlookupを実現でなくても、それよりも簡単な方法があれば教えていただきたいです。 お手数ですが、よろしくお願いします。

  • エクセルVBAでセルの値を1分毎にコピーしたい

    エクセルでA1にスピンボタンでカウントした値を1分毎に順次他のセルにコピーしたいのですがVBAで可能でしょうか。またそのA1の値も30分あるいは1時間毎にリセット(ゼロからスタート)したいのですがVBAで可能でしょうか。 よろしくお願いします。VBA初心者です。

  • エクセルVBAで

    エクセルのVBAでやりたいことがあるのですが、 一枚のシートのセルA1に1が入っているとします。そこで自動でA2に2、B1に3、B2に4といったようにセルの値を一つずつ増やていったものを連番で10枚印刷しようと考えているのですがうまくいきません。ご教授願います。

  • VBAの書き方を教えてください

    EXCEL2003を使用しています。 特定のセルの値を取得して、値と同じシート名を検索して移動する事はVBAで可能でしょうか? 具体的に、sheet1のA1はVLOOKUPにて検索後の値(りんご)が表示されています。 コマンドボタンにて、A1の値(りんご)を取得して、数十枚あるシートの中からA1と同じ値(りんご)の名前のシートに移動したいのです。 いろいろ探したのですが、よく分からなかったので教えて下さい。

  • EXCEL(VBA)について

    EXCEL(VBA)について質問です。 S7~S15に入った値(sumifで引っ張っています)をS6の日付に対してのT6~の日付にたいして T7:Y15の欄にボタンなどで反映をさせたいです。 また反映後は各セルにそのまま値が残るような形にしたいです。 以上、よろしくお願い致します。

  • VBA 計算の速度調整

    エクセルVBAでランダムに1から10の数字10000個を各セルに書き、各数字に対応する色に塗り分けるというコードを作ったのですが、実行ボタンを押して、色が自動的に塗り分けられていくスピードを早くしたり、遅くしたりすることはできるのでしょうか?

  • VBAにてセルの値を移動させる方法を教えてください。

    VBAを使用しEXCELのセルの値を移動させたいのですが、たとえば下記のように●と▲で構成された同じワークシート内のセルの集合に対し(1)の集合を(2)の集合を維持したまま(2)に移動させたいのです。      (1)            (2) ABCDEFGHI    JKLMNOPQR 1▲●           ● 2●            ▲● 3▲ ●          ▲▲● 4●●●●         ●● 5▲▲▲●●        ●▲ 6▲●           ●●▲ 移動後     (2)((1)+(2)) JKLMNOPQR 1●▲● 2▲●● 3▲▲●▲● 4●●●●●● 5●▲▲▲▲●● 6●●▲▲● (1)の異動元のB3の空白は移動後には左に詰めるようにし、移動後の内容でセル列Rを越える値は切り捨てるようにもしたいのです。こんな形でのマクロをご教授いただきたいのですが、よろしくお願いいたします。

  • エクセルのVBAを使って、セルの値の検索をしたいと思ってます。

    エクセルのVBAを使って、セルの値の検索をしたいと思ってます。 ですが、cells.findのように、アクティブセルが移動することなしに、値のみを取得し、変数に格納したいと思っていますが、どうすればよいか、見当がつきません。 繰り返し構文を使えば、検索はできますが、それだと、無駄に重くなりそうなので、何か良い方法はありませんか?

  • ExcelのVBAでカタカナをチェックしたい

    ExcelのVBAで、あるセルの値が半角カタカナであった場合エラーとしたいのですが、 セルの値が半角カタカナという条件式の構文がわかりません。 困っています。どなたかお助けくださいませ! また、できることならば、半角カタカナ→全角カタカナに自動修正させたいのですが、 無理ならば上記のエラーチェックだけでもよいです。 もし、こちらもおわかりになる方いらっしゃいましたら教えてください。よろしくお願いいたします。

ONUのネット回線が遅い原因は?
このQ&Aのポイント
  • ネット回線が遅い原因となるONUについて調査しました。
  • ONUがネット回線の遅さの原因となることがあります。
  • ONUを交換することでネット回線の速度向上が期待できます。
回答を見る