• ベストアンサー

プログレスバー

manabu4673の回答

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

可能性だけの話ですが、 右辺式の(picProgress.Width / lCount) * i において、picProgress.WidthがlCountに対して十分に小さい場合、 (picProgress.Width / lCount)の結果が1より小さかったために、 整数化させた際に0になってしまったのだと思います。 i * picProgress.Width / lCount に代えてみてはいかがでしょうか?

aki08102001
質問者

補足

ありがとうございます。 動くようにはなったのですけど 透明のようなものが動いています。 picBarのBackcolor=&H00FF0000&です。 お願いします。

関連するQ&A

  • プログレスバーで

    VB6.0 SQL SERVER WinXPです。 UPDATEの処理の時に進行状況を表示したいのですが うまく動かずバーが真っ白のままです。 教えてください。 lCount = pbAdo.RsRecordCount(rc) With pvBase If rc.EOF = False Then picBar.Width = 0 labCount.Caption = "" labCount.Visible = True End If If rc.RecordCount Then rc.MoveFirst Do While Not rc.EOF sSQL = " UPDATE m_zaiko SET " sSQL = sSQL & " 実在庫数=" & .CvtSQL(dblZaikoSuu, CVT_DBL) sSQL = sSQL & " WHERE " sSQL = sSQL & " 品番=" & .CvtSQL(strHinban, CVT_STR) sSQL, lRet, adExecuteNoRecords + adCmdText picBar.Width = (picProgress.Width / lCount) * i labCount.Caption = CStr(i) & "/" & CStr(lCount) rc.MoveNext i = i + 1 DoEvents Loop Set rc = Nothing End With

  • excel VBA プログレスバーについて(初心者)

    VBA初心者の質問です… excelで入力されている値を用いて、グラフ作成する簡単なデータを作りました。 特に問題なくグラフは出来たのですが、グラフ作成が1つではなく数個同時(順番)に作成しているため時間が掛かってしまいます。 この処理中にプログレスバーを表示出来ればと思い質問を致します。 私なりに調べ(goo内)下記サンプルを発見し、簡単なのでこれを使をうかと思うのですが、UserForm1の処理前にUserForm2.showだけでは UserForm2の処理が終わらないと処理をしません…当然ですよね… 本当に初心者で申し訳ないのですが、UserForm1の処理最中にUserform2のプログレスバーを表示するのにはどうすればいいのでしょうか… 【サンプル】 Private Sub UserForm_Activate() With Label1 .SpecialEffect = 2 .BackColor = vbBlue www = .Width .Width = 0 End With For i = 1 To 1000 Me.Caption = i Label1.Width = i / 1000 * www Me.Repaint Next End Sub また他におすすめなやり方があれば教えて頂ければ… 初心者な質問で申し訳御座いません。

  • LabelとFrameでプログレスバー VBA

    お世話になっております。 Excel2003を使用しております。 LabelとFrameを使い、プログレスバー表示したいと思っております。 ユーザーフォーム上に、 Label と Frameを置き、 Frameの中にLabelを置きます。 (ここは上手くできているか不安です) UserFormInitializeに With Me.Label1 .Top = 1 .Left = 1 .Width = 1 .BackColor = vbBlue BarWidth = Me.Frame1.Width - 6 End With そして、ためしにコマンドボタンを設置して、 Dim i, 最大値 As Long 最大値 = 100000 BarWidth = Me.Frame1.Width - 6 Do If i = 0 Then Me.Label1.Width = BarWidth * 1 / 最大値 Else Me.Label1.Width = BarWidth * i / 最大値 End If i = i + 1 Loop Until i = 最大値 上記のように記入してみました。 一瞬で表示されてしまいますし、 一度処理が終わっても、青いバーが表示されたままで どうすればいいのか良く分かりません。 最後に Me.Label1.Width = 0 と書けばいいのは分かりましたが… どうしたら、バーの伸び具合をゆっくり見られますか? 回答よろしくお願い致します。

  • Webbrowserで完全にHPを表示させるまで待機したい。

    VB6.0を使っています。 Webbrowserを使いまして HPの表示を完了するまで待機するようにしようと思いました。 しかし表示前に”読み取り終了”になってしまいます。 表示するまで待機させるにはどうすればいいのでしょうか? どうかお願いいたします。 Label1.Caption = "読み取り中" WebBrowser1.Navigate "http://www.yahoo.co.jp" Do While WebBrowser1.Busy = True DoEvents Loop Do While WebBrowser1.Document.ReadyState <> "complete" DoEvents Loop Label1.Caption = "読み取り終了" あと、基本的な操作なのですが プロジェクトを読み込んだすぐにはコードもオブジェクトも表示されません。 一度実行してからコードを出さざるを得ないのですが これはどうすればいいのでしょうか?

  • Excel2007 VBA ラジオボタン Caption

    動的に生成したActiveXコントロールのOptionButtonのプロパティを設定しようと考えています。 For i = StRow To EdRow Step 1 Sheet.Cells(i, Col).Select Left = ActiveCell.Left Top = ActiveCell.Top Width = ActiveCell.Width Height = ActiveCell.Height Set Page = Sheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", _ Left:=Left, _ Top:=Top, _ Width:=Width, _ Height:=Height) Page.Name = "Opt" + CStr(i) Page.GroupName = "選択" Page.Caption = "" Next i Nameプロパティは正常に設定できるのですが、GroupNameとCaptionでエラーになってしまいます。 エラー'438' オブジェクトはこのプロパティまたはメソッドをサポートしていません。 となります。 VisualBasicのヘルプよりOptionButtonのプロパティとしては存在しているので、なぜサポートしていないといわれるのかがわかりません。 どのようにすれば設定可能でしょうか。

  • エクセル2003VBAにて、

    エクセル2003VBAにて、 ユーザーフォームのラベルへ処理状況を表示したいのですが、 マクロ実行中はユーザーフォームに処理が渡されないのか以下のコードが反映されません。 そこでDoEventsを入れてみたのですが、 やっぱりラベルに以下の文字が反映されません。 どなたかよい解決方法を御存じないでしょうか? 教えてください。よろしくお願いいたします。 DoEvents UserForm1.Label9.Caption = "行数確認中です..."

  • プログレスバーでの経過状況表示

    vb.netでのtimerのようなものをやりたくてvbaでプログレスバーを使用して経過状況を表示するプログラムを作りました。プログレスバー自体での視覚的な経過状況表示はできたのですが、現在のパーセンテージをlabelに表示することができません。 Private Sub CommandButton4_Click() Dim i As Long Application.Visible = False i = 1 For i = i To 1000000 UserForm1.ProgressBar1.Value = i / 1000000*100 UserForm1.Label1.Caption =UserForm1.ProgressBar1.Value i = i + 1E-44 Next Application.Visible = True End Sub 上記のようにするとプログラム終了時にlabel1に現在のプログレスバーの値が表示されますが、進行中には表示されないのです。これを進行中も表示させるにはどうしたら良いのでしょうか?

  • VBA DoEvents関数の働きと使い方を知りたい

    下記のような UserForm上の Module コードを書いてももらったのですが、DoEvents の働きが分からないのです。どなたか分かりやすく説明していただけませんでしょうか? Private i As Integer Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Me.TextBox1.Value = Me.Label1.Caption Then Me.Label2.Caption = "正解です" Else Me.Label2.Caption = "不正解です" End If DoEvents If i < 20 Then i = i + 1 Label_Up Me.TextBox1.Value = "" Cancel = True Else MsgBox "終了です" End If End Sub Private Sub UserForm_Initialize() i = 1 Label_Up End Sub Private Sub Label_Up() Me.Label1.Caption = Sheets("Sheet1").Range("A1:A20").Cells(i).Value DoEvents End Sub

  • excel vba フォーム DoEvent

    Excel vba  下記のようにユーザーフォームでストップウォッチを動かしています。 計算問題のプログラムを動かし、指定問題数回答後、時間を表示して停止しようとしています。 問題点: ストップウォッチ起動後、セルに数字を入力しEnterを押してもUserFormに戻ってこず、時計は止まったままになります。 継続して時間を計測、表示する方法があればご教示お願いします。 Private Sub UserForm_Activate() Dim counttime As Variant Do While kentime > 0 counttime = Int((Timer - dblTimer) * 10) / 10 ‘小数点以下が“0”の時も“.0”の表示にする If Int(counttime) = counttime Then hyoujitime = Right(" " + CStr(counttime), 5) + ".0" Else hyoujitime = Right(" " + CStr(counttime), 7) End If Label1.Caption = hyoujitime DoEvents Loop End Sub

  • ワークシート上に配置したコマンドボタンの操作

    OS:WinXP-Home Office:Excel2000 を使用して、VBAのマクロを作成しています ワークシートに複数のコマンドボタンを配置して 各ボタンのcaptionに複数のワークシート名をそのまま代入したいと思っているのですが 以下のソースでは実行できませんでした 記述先はコマンドボタンを貼り付けたシートです 試しに11枚のワークシートと10個のコマンドボタンで実行してみました Private Sub Worksheet_Activate() For i = 1 To 10 Controls("CommandButton" & i).Caption = Sheets(i + 1).Name Next i End Sub 以下のように一つずつ指定すればうまく行くのですが CommandButton1.Caption = Sheets(2).Name CommandButton2.Caption = Sheets(3).Name ・ ・ ユーザフォーム上のコントロールと違って 「Controls()」での操作は出来ないのでしょうか? 自力で検索したところ OLEObjects("CommandButton" & i).Caption = Sheets(i + 1).Name Controls.Item("CommandButton" & i).Caption = Sheets(i + 1).Name の方法も試してみましたがやはりうまく行きませんでした よろしくお願いします