Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13394 / 13644 ツリー ←次へ | 前へ→

【5600】プログレスバーの処理速度があわない みよ 03/5/21(水) 20:24 質問
【5601】Re:プログレスバーの処理速度があわない Be Quit 03/5/21(水) 21:27 回答
【5607】Re:プログレスバーの処理速度があわない みよ 03/5/21(水) 22:49 質問
【5608】Re:プログレスバーの処理速度があわない ポンタ 03/5/21(水) 23:06 回答
【5611】Re:プログレスバーの処理速度があわない みよ 03/5/22(木) 0:42 質問
【5612】Re:プログレスバーの処理速度があわない ichinose 03/5/22(木) 1:12 発言
【5614】Re:プログレスバーの処理速度があわない みよ 03/5/22(木) 10:22 お礼

【5600】プログレスバーの処理速度があわない
質問  みよ  - 03/5/21(水) 20:24 -

引用なし
パスワード
   こんばんは

ちょっと教えて下さい。

ラベルを利用した、プログレスバーを作ってまして、処理速度とLabel3が合わないんです。
____________________
UserForm1                |
      _____________________    
     │_____________________│ ←←←←Label3。
                      実行すると、青色で
                      1%から100%まで表示される。
______
 実 行 
──────

____________________

実行すると

Label3の表示(1%〜100%)が先に終って
後から組み合わせの方が終るって感じになってしまって・・

何が足りないのかわからないので教えてください。

本当にすいません

プロシージャです

Option Explicit

Private Sub CommandButton1_Click()

Dim A(1 To 15) As Long
Dim gyou As Long

Dim AA As Long

Dim mystep As Single

Dim i As Long
Dim j As Long
Dim k As Long
Dim l As Long
Dim m As Long
Dim n As Long
Dim o As Long
Dim p As Long

With Label3

  mystep = .Width / 100
  .Width = 0
  .BackColor = &HFF0000
  Label1.Caption = "実行中....."
  
For AA = 1 To 100


  .Width = .Width + mystep
  Label4.Caption = AA & "%"
  
 DoEvents
 
 Next AA
 
  Label1.Caption = "処理が終了しました"
  
End With

A(1) = 100: A(2) = 200: A(3) = 300: A(4) = 400: A(5) = 500
A(6) = 600: A(7) = 700: A(8) = 800: A(9) = 900: A(10) = 1000
A(11) = 1100: A(12) = 1200: A(13) = 1300: A(14) = 1400: A(15) = 1500

For i = 1 To 8
For j = i + 1 To 9
 For k = j + 1 To 10
  For l = k + 1 To 11
   For m = l + 1 To 12
   For n = m + 1 To 13
    For o = n + 1 To 14
    For p = o + 1 To 15
    
   gyou = gyou + 1
   
   If gyou < 65536 Then
    Cells(gyou, 1) = A(i)
    Cells(gyou, 2) = A(j)
    Cells(gyou, 3) = A(k)
    Cells(gyou, 4) = A(l)
    Cells(gyou, 5) = A(m)
    Cells(gyou, 6) = A(n)
    Cells(gyou, 7) = A(o)
    Cells(gyou, 8) = A(p)
    
   End If
  
    Next
   Next
   Next
  Next
  Next
 Next
Next
Next


End Sub

Private Sub UserForm_Initialize()

Label3.BackColor = &H8000000F

End Sub

見にくくてすいません。

【5601】Re:プログレスバーの処理速度があわない
回答  Be Quit  - 03/5/21(水) 21:27 -

引用なし
パスワード
   ▼みよ さん
こんばんは。
はじめまして。

>ラベルを利用した、プログレスバーを作ってまして、処理速度とLabel3が合わな
>いんです。
>Label3の表示(1%〜100%)が先に終って
>後から組み合わせの方が終るって感じになってしまって・・

原因は、
○ .Width と gyouが連動していない。
○ 別のFor Nextで処理している。
このあたりでしょうか。

勘違いでしたら申しわけありません。

【5607】Re:プログレスバーの処理速度があわない
質問  みよ  - 03/5/21(水) 22:49 -

引用なし
パスワード
   ▼Be Quit さん
こんばんは。

>原因は、
>○ .Width と gyouが連動していない。
>○ 別のFor Nextで処理している。
>このあたりでしょうか。

もう少し具体的にお願いします m(._.)m オネガイ。

【5608】Re:プログレスバーの処理速度があわない
回答  ポンタ  - 03/5/21(水) 23:06 -

引用なし
パスワード
   横から失礼します。

これでどうでしょう?

Private Sub CommandButton1_Click()
Dim A(1 To 15) As Long
Dim gyou As Long
Dim AA As Long
Dim MyWidth As Single
Dim i As Long
Dim j As Long
Dim k As Long
Dim l As Long
Dim m As Long
Dim n As Long
Dim o As Long
Dim p As Long
A(1) = 100: A(2) = 200: A(3) = 300: A(4) = 400: A(5) = 500
A(6) = 600: A(7) = 700: A(8) = 800: A(9) = 900: A(10) = 1000
A(11) = 1100: A(12) = 1200: A(13) = 1300: A(14) = 1400: A(15) = 1500
Label1.Caption = "実行中....."
With Label3
 MyWidth = .Width
 .BackColor = &HFF0000
 For i = 1 To 8
  For j = i + 1 To 9
  For k = j + 1 To 10
   For l = k + 1 To 11
   For m = l + 1 To 12
    For n = m + 1 To 13
    For o = n + 1 To 14
     For p = o + 1 To 15
     gyou = gyou + 1
     If gyou < 65536 Then
      Cells(gyou, 1) = A(i)
      Cells(gyou, 2) = A(j)
      Cells(gyou, 3) = A(k)
      Cells(gyou, 4) = A(l)
      Cells(gyou, 5) = A(m)
      Cells(gyou, 6) = A(n)
      Cells(gyou, 7) = A(o)
      Cells(gyou, 8) = A(p)
      Label3.Width = MyWidth * (gyou / 6435)
      DoEvents
     End If
     Next
    Next
    Next
   Next
   Next
  Next
  Next
 Next
End With
Label1.Caption = "処理が終了しました"
End Sub

【5611】Re:プログレスバーの処理速度があわない
質問  みよ  - 03/5/22(木) 0:42 -

引用なし
パスワード
   ▼ポンタ さん
ありがとうございました。
速度はバッチリでした!。

今度は、パーセントがカウントしなくて困りました・・・

誰か、おしえてください m(_ _)mゴメンナサイ・・

【5612】Re:プログレスバーの処理速度があわない
発言  ichinose  - 03/5/22(木) 1:12 -

引用なし
パスワード
   ▼みよ さん、みなさん、こんばんは。

'==========================================================
>Private Sub CommandButton1_Click()
>Dim A(1 To 15) As Long
>Dim gyou As Long
>Dim AA As Long
>Dim MyWidth As Single
>Dim i As Long
>Dim j As Long
>Dim k As Long
>Dim l As Long
>Dim m As Long
>Dim n As Long
>Dim o As Long
>Dim p As Long
>A(1) = 100: A(2) = 200: A(3) = 300: A(4) = 400: A(5) = 500
>A(6) = 600: A(7) = 700: A(8) = 800: A(9) = 900: A(10) = 1000
>A(11) = 1100: A(12) = 1200: A(13) = 1300: A(14) = 1400: A(15) = 1500
>Label1.Caption = "実行中....."
>With Label3
> MyWidth = .Width
> .BackColor = &HFF0000
> For i = 1 To 8
>  For j = i + 1 To 9
>  For k = j + 1 To 10
>   For l = k + 1 To 11
>   For m = l + 1 To 12
>    For n = m + 1 To 13
>    For o = n + 1 To 14
>     For p = o + 1 To 15
>     gyou = gyou + 1
>     If gyou < 65536 Then
>      Cells(gyou, 1) = A(i)
>      Cells(gyou, 2) = A(j)
>      Cells(gyou, 3) = A(k)
>      Cells(gyou, 4) = A(l)
>      Cells(gyou, 5) = A(m)
>      Cells(gyou, 6) = A(n)
>      Cells(gyou, 7) = A(o)
>      Cells(gyou, 8) = A(p)
>      Label3.Width = MyWidth * (gyou / 6435)
      Label4.Caption = Format(gyou / 6435, "0%")
>      DoEvents
>     End If
>     Next
>    Next
>    Next
>   Next
>   Next
>  Next
>  Next
> Next
>End With
>Label1.Caption = "処理が終了しました"
>End Sub

でどうでしょう?

【5614】Re:プログレスバーの処理速度があわない
お礼  みよ  - 03/5/22(木) 10:22 -

引用なし
パスワード
   ▼ichinose さん

Label4.Caption = Format(gyou / 6435, "0%")にすれば良かったんですね

勉強になりました

ありがとうございました!!

13394 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free