• ベストアンサー

VB タイマーコントロールをインデックスを使用し130個作成しました。

VB タイマーコントロールをインデックスを使用し130個作成しました。 タイマーイベントの表記はどのようにするのでしょうか。 Private Sub Timer(0)_Timer()  ~ End Sub とするとエラーになります。タイマーコントロールのインデックスの使い方が分かりません。よろしくお願いします。

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

  • ベストアンサー
  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.2

配列にしたから正しく動作しないのでしょうか? それとも元々動作していないのでしょうか? 質問本文では「エラーになります。」とのことで 先の回答への補足では「処理がなされません」 微妙に表現が異なるのは、状況が進展したけど完成形に至っていないと言うことでしょうか? 先程の回答で配列に関する問題はクリアになったのでしょうか? 「処理がなされません」とは具体的にどの様な状況でしょうか? イベントが発生しない? イベントは発生するが、思うように結果が得られない? タイマーコントロールを130個も使う事の是非は別問題として 現在の状況など詳しく正確に記載してもらえないと何が起きて、何が問題なのかわかりません。 単純にEnabled属性が・・・ってな事では無いのですよね?

azumaosuga
質問者

お礼

皆様有難うございました。 Select Caseの条件文に誤りがありました。配列Timerのイベントが正常に処理されました。感謝、感謝です。

azumaosuga
質問者

補足

本文のようにするとエラーが発生します。補足文のようにするとエラーは発生しませんがイベント処理がなされません。配列にせずTimer0,Timer1,・・・のように個別にタイマーを作製した場合それぞれのタイマーイベント処理が正しく行われます。130個のタイマーを使う理由は130室の空き状況、その他を常時監視し状況に応じ部屋ごとに処理をしています。EnableプロパティーはTrueです。

その他の回答 (1)

  • andy_kun
  • ベストアンサー率23% (64/274)
回答No.1

Private Sub Timer_Timer(Index as integer) 'タイマーの処理 End Sub

azumaosuga
質問者

補足

Private Sub Timer_Timer(Index as Integer) Select Case Index Case 0 to 20 など タイマー処理  End select End Sub  と作製しましたが、各タイマーで処理がなされません。

関連するQ&A

  • VB6でスロットを作成したい

    VB6歴2ヶ月の初心者です。 フォーム上に ラベルコントロールが三つ コマンドボタンが二つ タイマーコントロールが一つ あります。 タイマーのプロパティは Enabled False Interval 10 です。 スロットを作成したいのですが、 ボタン1を一回押すごとに左からスロットが回り、 最後にボタン2で動きを止めたいのです。 一応自分でも書いてみたのですが、ここで行き詰まりました。 ウワァァァァァァヽ(`Д´)ノァァァァァァン! Private Sub Command1_Click() Timer1.Enabled = True End Sub Private Sub Command2_Click() Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Dim slot As Integer slot = Int(Rnd(1) * 9 + 1) Label1.Caption = slot End Sub 思い通りに動かすにはどんなコードにしたらいいですか?

  • タイマーの使い方

    VB初心者です(6.0を使っています) タイマーの使い方がよく分かっていません。 ボタンを押してからの経過時間をラベルに表示させたいと思っているのですが、 ----------------------------------------------- Private Sub Command1_Click()   Timer1.Interval = 1000   処理1   処理2    ・    ・    ・   Timer1.Interval = 0 End Sub Private Sub Timer1_Timer()   Label1.Caption = [経過時間] End Sub ----------------------------------------------- という感じに書いていると、[処理1]~をしている間はラベルが表示されなくて、 最後の[処理]が終わった直後の[経過時間]のみが表示されます。 こういう形ではタイマーは使用できないのでしょうか? 他のWebサイトなども調べてみたのですが、解決できませんでした。 どなたか教えていただけませんでしょうか?

  • TimerコントロールのindexとTimerイベント

    TimerコントロールのindexとTimerイベント   TimerイベントではTimerコントロールのindexを利用できないのでしょうか。多数のタイマーを使用し似たような動作をさせる場合、Timerイベントに配列が使えないと手数がかかります。何か便利な方法がありますか

  • VB.NET 動的コントロールのインデックス

    VB.NET 2005で動的コントロールを複数作成し、 クリックされた動的コントロールのインデックスを 調べる方法はないでしょうか? 以下の様に動的コントロールLabel01とLabel02が複数並んでいて Label01(3)をクリックした時に、Label02(3)も同時に処理 したいのでインデックスを調べたいのですが方法がわかりません。 [Label01(1)] [Label02(1)] [Label01(2)] [Label02(2)] [Label01(3)] [Label02(3)] [Label01(4)] [Label02(4)] [Label01(5)] [Label02(5)]    :      : [Label01(x)] [Label02(x)] '----------------------------------------------- 'Label01(3)がクリックされたら、Label02(3)も"ok"を表示する Private Sub Lab01_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim lab01 As Label = CType(sender, Label) System.Diagnostics.Debug.WriteLine(lab01.Text & "が押されました。") lab01.Text = "ok" lab02(?).Text = "ok"  '←インデックスがわかりません End Sub '-----------------------------------------------

  • タイマーがうまく動かない

    VB6.0(SP5)で、バッチファイルを実行後、5秒待つようにしたいのですが、うまく動きません。 Dim ping_count As Long Private Sub Command1_Click() Shell ("executeping.bat") Timer1.Interval = 1000 Timer1.Enabled = True Do Text1.Text = "ただいま実行中" Timer1_Timer Loop Until ping_count = 5 Text1.Text = "終了" Timer1.Enabled = False End Sub Private Sub Timer1_Timer() ping_count = ping_count + 1 Text1.Text = "ただいま実行中" End Sub デバックで動かすと、ちゃんとループを5回繰り返してテキストボックスに「終了」と表示するのですが、実行するといきなり「終了」を表示してしまいます。 ループの中のTimer1_Timerをコメントにすると、デバックでは延々ループを続け、実行するとフリーズしてしまいます。 そもそもタイマーの使い方が間違っているのでしょうか? 教えてください。よろしくお願いします。

  • 続・タイマーとShowdialog(VB2010)

    タイマーコントロールについて の続きになります。 一つ方法を考えました。いくつか問題ありですが・・。 ApplicationEvent.vbの部分を Namespace My Partial Friend Class MyApplication Protected Overrides Function OnInitialize( _ ByVal commandLineArgs As _ System.Collections.ObjectModel.ReadOnlyCollection(Of String) _ ) As Boolean 'スプラッシュウィンドウを表示する最短時間を0.5秒にする Me.MinimumSplashScreenDisplayTime = 500 Return MyBase.OnInitialize(commandLineArgs) End Function      'スプラッシュスクリーンのタイマーコントロール設定 Friend Sub Splash() With SplashScreen1.Timer1 .Enabled = True .Interval = 500 End With SplashScreen1.Timer1.Start() End Sub ' この書き方あってますか?とりあえずは反映されてるようですけれど・・・ End Class End Namespace SplashScreen1の部分を Public Class SplashScreen1 Friend Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click     ' クリックで閉じる DialogResult = DialogResult.OK Me.Close() End Sub Friend Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick ' タイマーコントロール発動時、瞬時に停止させる。スクリーンは消えないように。 Me.Timer1.Enabled = False Me.ShowDialog() End Sub End Class と、してみましたが・・・問題が発生するのです。 この時、スクリーンフォームがMe.ShowDialog()と書いてあるにもかかわらず、 メインフォームとともに操作可能・・つまりモードレスであるShowで表示されるのです。上記のコードを実行してもらえれば分かると思いますが・・。 また、メインフォームが前方に、スクリーンフォームが後方に行ってしまいます。これはどのようにすれば良いでしょうか? Me.TopMost = True としても駄目でした。 BringToFrontを使っても同じでした。

  • タイマーがうまくできません

    VisualBasicにてタイマーを作ろうと思っています。(キッチンタイマーみたいなもの) プロパティの初期値としては「Timer2.Interval = 100」 別に作成したボタンで「Timer2.Enabled = True」にするプログラムをした上で Private Sub Timer2_Tick(。。。省略  hyaku = Int((hyaku - 0.1) * 10) / 10  If hyaku >= 0 Then    Label5.Text = hyaku  Else    Timer2.Enabled = False  End if End Sub というプログラムを作成しました。 しかしプログラムを実行させると通常の約2倍の速さで秒数を刻んでいきます。 だからといって上の hyaku = Int((hyaku - 0.1) * 10) / 10 を hyaku = hyaku - 0.1 にすると小数点1位未満の数字も表示されてしまいます。 もしプログラムにミスがあるなら指摘をお願いします。 またExcelの関数にある「Round」みたいなものがあれば教えてください。 よろしくお願いします。

  • ActiveXコントロールの作成(VB6)

    こんばんは。 今、VB6でActiveXコントロールを作成しようと思っています。 現在、標準EXEにて、プログラムが作ってあります。 動作としては、 1.スタートボタン(CmdStart)で開始 2.処理(外部の測定器によるデータ収集) 3.終了ボタン(CmdEnd)にてプログラム終了 です。 これをもとに、ActiveXコントロールを作成したいです。手元にある文献にしたがってほぼコピー&ペーストで作成しました。また、これの動作を調べるため、標準EXEのフォームを作成し、そのフォームにActiveXコントロールを貼り付けました。 ここで質問です。 Form_LoadはUserControl_Initializeに書き換えました。(これは文献に載っていました) 最後のプログラム終了がうまくいきません。 標準EXEでは Private Sub CmdEnd_Click() Unload Me End Sub と書いてプログラムを終了させていました。 ここを書き換えずにActiveXコントロールを実行させたらエラーが出ました。"Unload Me"を"End"に書き換えてみたら、サポートされていないと出ました。 CmdEndをクリックしてプログラムを終了させるにはどう書けばいいでしょうか? よろしくお願いします。

  • vb.netのタイマーについて

    こんにちわ。 vb.netのタイマー機能についての質問です。 私の理解ではタイマーをオンにし、設定時間立つとタイマーに設定してあるルーチンが「割り込み実行」される。 なんですが、 その割り込み実行した後、割り込み元のルーチンを終了させるにはどうしたらよいでしょうか? イメージは↓ Public Sub main_test() Dim aaa As Integer = 0 time_count.Enabled = True time_count.Interval = 5000 For i = 0 To 10000 Step 1 aaa += 1 Next i End Sub '切断タイマー Private Sub time_count_Tick(sender As Object, e As EventArgs) Handles time_count.Tick 'ここでmain_test()を終了させたい。 End Sub 他のやり方でも構いませんが、アドバイスのほどよろしくお願いいたします。 使用しているのは win7 VB.net2012 です。

  • VB6.0でMSChartをタイマーを使い徐々にグラフを伸ばしたい。

    VB6.0でMSChartをタイマーを使い徐々にグラフを伸ばしたいのですが、上手くいきません。コマンドボタンを使いクリックしたと同時にタイマーを作動させて、ある値までグラフを増加させたいと思っているのですが、初心者同然なので詳しくお願いします。 Dim dat(4, 3) As Integer Dim a As Long Private Sub Command1_Click() With MSChart1 .chartType = VtChChartType3dBar .ColumnCount = 3 .RowCount = 4 For i = 1 To .RowCount For j = 1 To .ColumnCount .Column = j .Row = i .Data = dat(i, j) Next j Next i .DataGrid.ColumnLabel(1, 1) = "(1)" .DataGrid.ColumnLabel(2, 1) = "(2)" .DataGrid.ColumnLabel(3, 1) = "(3)" .DataGrid.RowLabel(1, 1) = "1月~3月" .DataGrid.RowLabel(2, 1) = "4月~6月" .DataGrid.RowLabel(3, 1) = "7月~9月" .DataGrid.RowLabel(4, 1) = "10月~12月" .Visible = True End With Timer1.Enabled = True End Sub Private Sub Form_Load() a = 0 MSChart1.Visible = False End Sub Private Sub MSChart1_OLEStartDrag(Data As MSChart20Lib.DataObject, AllowedEffects As Long) End Sub Private Sub Timer1_Timer() a = a + 10 dat(1, 1) = a: dat(1, 2) = 100: dat(1, 3) = 110 dat(2, 1) = 30: dat(2, 2) = 110: dat(2, 3) = 110 dat(3, 1) = 40: dat(3, 2) = 120: dat(3, 3) = 110 dat(4, 1) = 50: dat(4, 2) = 130: dat(4, 3) = 110 If a = 100 Then Timer1.Enabled = False End If End Sub

専門家に質問してみよう