• ベストアンサー

エクセルのVBA実行中の進捗バーについて

こんにちは! エクセルのVBA実行中の進捗バーについて押し終えてください。 よくあるソフトのインスト時に表示されるインストの進捗バー?とほぼ同じ者をエクセルVBA実行時にもでるようにしたいのですが・・・ 方法を教えてください。

  • K-19
  • お礼率35% (55/157)

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

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

1、テキストボックス編。 テキストボックスのテキストに四角(黒ベタ)を予めセット。 Private Sub CommandButton1_Click()   Dim I As Integer   Dim L As Integer   Dim T As String      T = Me.TextBox1.Text   L = Len(T)   Me.TextBox1.Visible = True   For I = 1 To L     Me.TextBox1.Text = Left(T, I)     Pause 1     DoEvents   Next I   Me.TextBox1.Visible = False End Sub これで、1秒毎に、四角が1個増えていきます。 見ようでは、プログレスバーです。 2、プログレスバー編。 プログレスバーそのものを配置。 プログレスバーは、[コントロールの選択]をクリックして行います。 Private Sub CommandButton2_Click()   Dim I As Integer      Me.ProgressBar.Max = 20   Me.ProgressBar.Left = 200   Me.ProgressBar.Top = 200   Me.ProgressBar.Visible = True   For I = 1 To 20     Me.ProgressBar.Value = I     Pause 1     DoEvents   Next I   Me.ProgressBar.Visible = False End Sub これでも、1秒毎に、バーが伸びていきます。 上記のコードをテストするには、下記のPause関数を標準モジュールに登録する必要があります。 Public Sub Pause(ByVal PauseTime As Single)   Dim Finish As Single      Finish = Timer + PauseTime   Do     DoEvents   Loop Until Timer > Finish End Sub

K-19
質問者

お礼

有難うございます。 プログレスバーそのものを配置。 プログレスバーは、[コントロールの選択]をクリックして行います。 ってなんですか? 何も分からず済みません。教えてください。

その他の回答 (7)

noname#52504
noname#52504
回答No.8

質問者さまへ …とわざわざ書くのもヘンですが。 「エクセルVBA実行時に進捗バーを表示する方法」の一つとして、 ●#1さんの、「プログレスバー編」があります。 しかし、ライセンスの観点から、 「使えるけど、使って良いかどうか、あるいは使い方」に関しては議論が存在するようです。 その他の方法として、 ●#1さんの、「テキストボックス編」 ●#2さんの、「VBA ではラベルコントロールを使って表現するか、ステータスバーなどで簡易的に表現する」 ●#6さんの、「簡単にラベルを文字の「■」などを入れる手法」 があるということのようです。 議論の是非について私はコメントする立場にありませんが、 少なくとも質問者さんのご質問やお礼自体に関して問題があったわけではありませんからご心配なく。 ※コレは「まとめ回答」というやつなので、間違えてもポイントつけてはいけません。

K-19
質問者

お礼

誠にありがとうございました。 私の質問でなにか問題かと思い心配してました。 VBAをもっと勉強せねばとおもいました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんにちは。 ちょっと情報が不足していたようです。ご心配かけて、すみませんです。 >元の記事・・・・私が何かしましたか?心配です。 そんなことはありませんです。以下に、そのサイトの著者が、 http://www.h3.dion.ne.jp/~sakatsu/ProgressBarTopic.htm 》※ Office のインストール又はSPアップデートにより、プログレスバーコントロールが入っている mscomctl.ocx ファイルが正規にインストールされる事が判りました(2006/7/27)。 とあります。そのいきさつを、他の掲示板で読んだのですが、それについて、詳しく語る必要はないと思い、割愛しました。 Excel2000のSPのいくつからか、インストールされるということになると、すくなくとも、Visual Basic(開発言語)を持っている人しか出来ない話ではないわけですね。かつては、私の記憶でも、そうだったのですが、以前からOffice VBAをされている方は、標準的に、MS-Office にはないという認識にあったように思います。 しかし、だいたいは、Office VBAを以前からされてきた方は、VB5/6のランタイムを入れてしまっているので、Office SPアップデートで入るということは、知らないような気がします。私自身、知りませんでした。 ある意味で、「ProgressBar Control」というのは、VBには、それは標準的にありましたが、VBAでは、仮に、それ向きに開発しても、個人的に使うだけの存在だと思いました。なかなか、VBAでは、VBランタイムを入れてくださいともいえませんしね。 だからこそ、このスレッドの最初に書いたサイトの著者(角田氏?)や、『かんたんプログラミング』(技術評論社)の大村あつしさんも、それに代わる代用法を編み出したのだと思います。(あくまでも、私の想像です。) 私の書いた 「現在のMS-Office 自体に標準的に備わっているとしたら、配布自体は関係なくなりますね。」 配布することがいけないといっても、それ自体を取りざたする必要がないのではないかなって思いました。お互いが持っているとしたら、それは、再配布することへの必要性はなくなります。私の書いたのは、そういう意味だったのですが、もちろん、その部分だけの文章を取れば、ライセンスフリーとも取られかねません。しかし、再配布権自体は認められてないと書いていますから、そこだけを捕らえて違った解釈する方はいないと信じます。 私としては、Excel上では、他のコントロールと同じように、個人としては自由に使ってかまわないよって書いたつもりなのですが、それ以外の、そのOCX などの再配布の問題は、この質問とは、また違ったステージの問題だと思いますが、ご質問者さんは気にする必要はないと思います。いろいろ試してみるのが良いかと思います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 ProgressBar Control って、 今は、標準で、Office についているように思えますね。 Office2000 SP3以降? http://support.microsoft.com/kb/325671/ja Office XP Service Pack 2 (SP2) の概要 MSCOMCTL.OCX は、コモンコントロールの名前は出てきますね。 VB6 ランタイム再配布バージョンでも、入っていますね。 私のところでは、ProgressBar は出せますが、こちらの環境では良く分かりません。私は、VB6は、もう入れていないだけで、あれこれ入っていますので、確信が持てません。 Developer バージョンでなければ、再頒布権はないので、ProgressBar のデザインを備えた形では配布することは出来ないという話だと思いますが、現在のMS-Office 自体に標準的に備わっているとしたら、配布自体は関係なくなりますね。もちろん、個人でお使いになる分には、まったく問題はない話ですが。

K-19
質問者

お礼

ありがとうございます。 私にはまだ、この手のVBAはむりです。分かりません。 勉強しなおします。また、何か問題でもありましたか? 元の記事・・・・私が何かしましたか?心配です。

noname#140971
noname#140971
回答No.5

  Dim N As Integer

noname#140971
noname#140971
回答No.4

Private Sub CommandButton1_Click()   Dim I As Integer   Dim L As Integer   Dim N As String     L = Me.Label1.Width   N = Me.Label1.Width \ 10   Me.Label1.Width = 0   Me.TextBox1.Visible = True   Me.Label1.Visible = True   For I = 1 To 10     Me.Label1.Width = N * I     Pause 1     DoEvents   Next I   Me.Label1.Visible = False   Me.TextBox1.Visible = False End Sub 一応、これで1秒間隔で進行ゲージが伸びていきます。

noname#140971
noname#140971
回答No.3

断っておきますが、エクセルは一度も操作したことのない門外漢です。 ですから、あくまでも、VBAの一般論で回答しています。 エクセル固有の実現方法があれば、的を外しています。 さて、プログレスバーの配置手順ですが、 1、メニュー-表示(V)-ツールバー(T)-コントロールツールボックスにレ点。 2、最下位のアイコンをポイントすると、[コントロールの選択]という説明文。 3、[コントロールの選択]をクリックすると、選択画面が表示されます。 4、Microsoft ProgressBar Control version 6.0 があればクリック。 これで、画面に配置できます。 なお、一番上に[デザインモードの開始・終了]ボタンがあります。 ところで、Microsoft ProgressBar Control の有無は環境によるかも知れません。 仮に無い場合は、テキストボックスを使われたらいいです。 なーに、ラベルコントロールを背景色付きでテキストボックスの上に配置すればプログレスバーが出来上がります。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> プログレスバーは、[コントロールの選択]をクリックして行います。 これは 製品版 VB(VBA とは別物)などに付属する OCX コントロール のことですね。VB がインストールされていない環境で OCX をデザイン 使用すると、ライセンス違反になりますのでご注意を。  # VB 未インストール環境では OCX のプログレスバーを使用しては  # いけません.....ということです。 VBA ではラベルコントロールを使って表現するか、ステータスバー などで簡易的に表現するのが良く知られた方法です。 参考URL: http://www.h3.dion.ne.jp/~sakatsu/ProgressBarTopic.htm

関連するQ&A

  • VBAを実行しないと開けないエクセルファイル

    タイトルのようなエクセルファイルを作りたいです。 閲覧者がVBAの実行を認めない限り、閲覧不可にしたいのです。もし認めない場合はメッセージボックス等で「開くことができません」と表示され、エクセルが閉じるようにしたいです。 どのようなVBAのプログラムを組めば実行できますか?

  • VBA 再実行

    エクセルVBAでループによる以下のような定期実行を行っています。 >1時間に一度株価のデータを取りに行きます。 >データ取得後、他のPCに(VBAでソフトを起動させて)アップロードします。 *このアップロードの時に、ソフトが別の処理をしていると起動しません。 VBAで起動はさせるものの、ソフトが実行しないという状態になります。 そこで、一度行った処理を時間をおいて再度実行させたいのです。 できれば、30秒後と1分後に2回再実行するというようにしたいと思っています。 どなたか、お力添え頂けませんか

  • Excel,vbaにて実行時エラー71

    Excel,vbaにて実行時エラー71 が表示されます。 USBメモリのExcelファイルに作成したのですが、 何が原因かわかりませんが、 エラー71が表示になります。 どのように手順にて治せばよろしいでしょうか? 宜しくお願いいたします。

  • Excelで進捗管理

    Excelで進捗管理を作ろうしています。 内容は 進捗率を%で表示し、その進捗率にあわせ グラフを表示させようと思っているのですがうまくできません。 例;進捗率50%  ||||| 上記のように縦線を進捗にあわせて表示させたいのです。 どなたかご教授ください。

  • VBAエクセル2003でのマクロの実行について

    VBAで2003を使っています。 マクロの実行をショートカットキーで操作したいのですが ツール→マクロ→オプションでショートカットキーの作成が可能ですが 会社(エクセル2003)のでやろうとすると オプションの表示がありません。 (もしかしたら2003ではないのかもしれませんが、確認した範囲では 2003かと思われます。2010とかいいのではないのは確かです。) ショートカットキーを作る方法でどのような方法が 他にありますか?教えてください。 お願いいたします。

  • WorkSheetの終了時にVBAを実行する方法

    WorkSheetの終了時にVBAを実行する方法を教えて ください。 また、ボタンで表示されるメニューバーの「標準」を消す方法を 教えてください。

  • Excel VBA 1行ずつ実行するには 

    いつもお世話になっています。 Excel VBAで記述したマクロを 1行ずつ確かめながら実行する方法を教えてください。

  • accessでexcelのVBAを実行

    excelのファイルにはVBAは一切入れないで、accessにexcelで使いたいVBA入力しておき実行したいのです。 理由はCSVファイルをVBAにて加工したいからです。 よろしくお願い致します。

  • excel97のVBAについて

    始めまして、MV3307と申します。 さて下記内容を、VBAでコードを書くつもりですが、マクロ初心者で記載 方法が分からないので是非ご教授お願いいたします。     記 (1)EXCELの"Sheet1"の数式バーに式が表示してあります。 (2)VBAの"コマンドボタン"をクリックして、数式バーの式をTexBoxに取得する。 以上です、宜しくお願いします。    

  • Excel VBAからAccessマクロを実行したい

    Excel VBAからAccessマクロを実行する方法を知っている人がいましたら 教えてください。 よろしくおねがいしまっす!

専門家に質問してみよう