• ベストアンサー

エクセルVBA プログレスバー表示について

いつもお世話になります。 ワークシート関数の計算中に、プログレスバーの目盛りを進めることは出来るでしょうか。 というのは、マクロで約1200行×50列=60000個のセルにワークシート関数(SUMPRODUCT関数などの、かなり時間のかかる関数が多く含まれています)を書き込んでいるのですが、中々計算が終わらないので、固まっているように見えるのです。 以上宜しくお願い致します。

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

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

こんにちは。 >まだまだ道のりは長いですね。そこまで極める必要もないかもですけど。 私もそれでよいのだと思います。覚えたころには、また、本体そのものが、まったく別のものになっている可能性があります。今の形態で、10年続きましたから、そろそろ寿命かもしれないなって思っています。VBAは、Visual Basic 6 の弟っていうところで、 本家は、.Netという、もう別のところに行ってしまいましたからね。 様相が変わるときって、いっぺんに変わります。Microsoft 社には、そういう前科が、何度もあります。例えば、Excel Ver 4 とVer 5 ぐらい変わってしまったら、とても、すぐに覚えられるものではありません。Excelのプロの方たちは、もう先の勉強をされていると思います。大混乱させられますから。 Office側は、Visual Studio Tool に移行しつつあるような噂も聞きます。そういう様子を見ながらがよいのではないでしょうか? >近い将来に買い替えると思うので、出来れば2003年版を買いたいのですがいかがでしょう? 2003版 のほうがよいと思います。私は、結局は、買い換えることになりましたが、内容的にはほとんど変わっていませんでした。大部分の主要なところは、ほとんど変わっていません。私自身のVBAの、経歴は短いけれども、その移り変わりだは、人の話も含めて、なんとなく見てきました。

7-samurai
質問者

お礼

大変参考になりました。 私もうすうすは、現在のEXCELの環境が様変わりするのではないかと感じていましたが、大変なことですね。日本だけでも何千万人という人がEXCELを使っているでしょうし。 ご丁寧にありがとうございました。

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

その他の回答 (2)

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

こんばんは。 最初に、 >エクセルがフリーズしていないことと、マクロが終了したことが分かれば良いのです。(何らかの図柄が動いているとか) それで、「わたし流」なのですが、まず、マクロの終了については、私は、Msgbox ではなくて、最後に全てが終わったら、「Beep」を入れています。 それで、だいたい、終了が何分も掛かるようですと、全体的な問題があると私は考えるですが、ループなどに、1000回に1度ぐらいに、やはり、「Beep」 を入れて、ハングしていない合図にしています。(例:If i mod 1000 =0 Then Beep)トラブルが起こっている時は、絶対に、「Beep」は鳴らないからです。もちろん、視覚的に Cell上にカウンタを出してもよいかと思います。 >ご回答の中で紹介していただいた書籍は、Wendy02様もお持ちのものですか? Mougの大村さんの著書ので、これは、定番ということだと思います。いろいろ本をあたって、この本でVBAを覚えました。全部で、3部になりますが、これを全部読み終わって、初級終了というところだと思います。 3部の中で、「Excel2003 VBA コントロール・関数編」が、一番、とっつきにくいですね。(Excel 2002版もまだ手に入るはずです。) この上の段階になると、急に難しくなって、Excelだけで収まらなくなってしまいますし、本にはないことが多いので、どうしても、マイクロソフトサイトのMSDN が必要になります。 Amozon:

参考URL:
http://www.amazon.co.jp/exec/obidos/ASIN/4774120286/qid=1121345871/sr=1-2/ref=sr_1_10_2/249-1462390-5530743
7-samurai
質問者

補足

ご回答ありがとうございます。早速試してみます。 質問ですが、私は現在エクセル2000を使っているのですが、2002や2003版を購入しても全然使えないですか?それともたまに問題がある程度ですか?近い将来に買い替えると思うので、出来れば2003年版を買いたいのですがいかがでしょう? >これを全部読み終わって、初級終了というところだと思います。 それで初級終了ですか・・・。 まだまだ道のりは長いですね。そこまで極める必要もないかもですけど。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 検索しても出てきたはずですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=405615 ここの#3 の方は、以下から写したものです。 『かんたんプログラミング Excel VBA コントロール・関数編』大村あつし著 (技術評論社) 第二章の中の、「ラベルをプログレスバーとして利用する」 ですが、Excelでは、プログレスバーを出したところで、負荷がかかるだけで、計算スピードを落とすようなものです。 >マクロで約1200行×50列=60000個のセルにワークシート関数(SUMPRODUCT関数などの、かなり時間のかかる関数が多く含まれています) コードを見なければなんとも言えませんが、処理スピードを上げることを優先したほうがよいのではないでしょうか?

7-samurai
質問者

補足

早速のご回答ありがとうございます。 プログレスバーでなくても、エクセルがフリーズしていないことと、マクロが終了したことが分かれば良いのです。(何らかの図柄が動いているとか) 処理を遅くしてしまうのは避けたいので、プログレスバー以外で、方法はありませんでしょうか? P.S ご回答の中で紹介していただいた書籍は、Wendy02様もお持ちのものですか? でしたら、ぜひ購入させていただきたいと思います。 私は、最初にマクロの入門書を購入した後、良い書籍が分からず、中級・上級用の書籍を持っていない状況で、新しい問題が出た度に、手探りで捜したり、このサイトで皆様からご回答をいただいているのですが、いつもご迷惑をおかけして申し訳ないと思っているのです。このような私に、良い書籍がありましたら、お手数ですが紹介していただけませんでしょうか。 本当は処理スピードを上げる方法をご相談したいのですが、マクロが長すぎるので、お見せすることは出来ないですね。

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

関連するQ&A

  • VBA エクセル2000でハイパーリンクをはる

    アクティブなワークシートの特定セル(行位置、列位置 一定)と他のワークシートの不定セル(行位置、列位置 とも、或いは、どちらか、 が変数)間にハイパーリンクをはりたい 実現したいことは至ってシンプルでセル間をジャンプ可能となればOK、です 例えばWorksheet「アクティブ」のCells(固定行位置,固定列位置)と Worksheet「他のシート」のCells(変数行位置,変数列位置)、両変数はその時点でプログラム(マクロ)が獲得済み、間にハイパーリンク(出来たら往復)をはるコードはどういうものになるでしょうか? うまく説明できているか、自信はありませんが何とか教えて頂きたくお願い致します

  • エクセル VBAで関数

    こんばんわ。いつもお世話になっております。 エクセルでデータを加工しているのですが、関数で加工するととても遅くなってしまうので なんとかVBAで作業できないかと模索中です。 Sheet1の、A列=取引先 B列=支店名 となっており、それが3,000行ほどあります。 Sheet2も、A列=取引先 B列=支店名 となっており、 Sheet1のC列に、Sheet1のA列のB列という支店が、Sheet2にあるか確認したいのです。 現在は、Sheet1のC列に、SUMPRODUCT関数でカウントさせているのですが、大変重いです。 ほかのSheetで、VBAを使って関数のような働きをさせている部分があります(前任者作成) そのように、なんとかVBAを使用したいのですが、なかなかうまく出来ません・・・。 どうか、お力を貸してください!! うまく説明できなくて、わかりづらかったらごめんなさい。 よろしくお願いいたします。

  • エクセル セルにデータを打ち込んだ時点でマクロを起動できるか?

    いつもお世話になります。 数千行ある表の列A,Bに数値を打ち込むセルを用意しており、打ち込まれた瞬間に、列Cに関数を使って答えを出したいのですが、列Cに予め関数を入力しておくと、計算が非常に遅く、また容量も重くなってしまいます。 そこで、 「列A,B両方にデータが打ち込まれた瞬間にマクロで列Cに数式を入力し、答えを出してから値で貼り付ける」 ということが出来ないかと思うのですが、可能でしょうか。 以上宜しくお願い致します。

  • エクセル2003VBAで選択範囲

    いつもお世話になっています。 エクセル2003を使用しております。下記を関数又はVBAの組み方・構文を教えて下さい。 (1)E列には、「1」と「.」と「空白」が入っています(「1」が入ってないケースもあります)が、「1」を検索します。もし「1」が無ければ、J列を同様に検索します。(中身はE列と同じです) (2)「1」が入っているセルから見て、「行」の±10の範囲内を選択し、別シートにコピーする。 例1. 1が入っているセルが、「E15」とします。 この場合、コピーしたい範囲は、5行目全部~25行目全部です。 例2. 1が入っているセルが、「E17」とします。 この場合、コピーしたい範囲は、7行目全部~27行目全部です。 分かりにくいかもしれませんが、よろしくお願いします。

  • エクセルVBA初心者です。マクロを組んでください。

    エクセルVBA初心者です。組んで欲しいマクロがあります。 Sheet 1に13桁を入力するセル sheet 2に検索したいデータ 手順としては、 Sheet 1のセルにデータを入力 →13桁以上でマクロが開始(されるように設定します) →Sheet 1のセルと同じ数列をSheet 2の列Aから検索 →該当のセルを含む行をSheet 3にコピー →Sheet 1の入力セルの少し下にもコピー (確認用) というのを一回一回ずつやりたいです。 できれば作業中マウスやキーボードを触りたくないので、そのために、マクロの終わわりには入力セル内の消去、マクロの始まりには確認用でコピーした行の削除もつけて下さい。 検索するSheet 2には同じデータが含まれているので、出来ればひとつずつSheet 3にコピーしたいので組み込んで頂けると幸いです。 よろしくお願いいたします。

  • Excel にて非表示行を探すワークシート関数

    ある膨大なデータをまとめた数百行からなる Excel ファイルがある のですが、その中で数箇所「非表示にされた行」があります。 その非表示行を探すワークシート関数って有りますでしょうか? (ワークシート関数が無理なら、マクロでも良いです。) ・非表示にされた行は1行だけの時もありますし、  2, 3 行をまとめて非表示にしている場合もあります。 ・Excel バージョンは 2003 です。 ・私の方で見つけた1つの方法として、以下の方法があります。   1. 適当な列に連続データで 1 から始まる番号を振る   2. それを適当なグラフにする   3. グラフの中で急に傾きが変化している所があれば、そこが非表示行である ・ただし、上記の方法ですと数十行なら視覚的に見つけやすいのですが  数百行、数千行の場合はグラフの中の傾きの変化が見つけづらいので NG ・一番理想的なのは画像の中の B4 (黄色いセル) のように、非表示行の1つ上の行に  "1" を表示し、かつ、それをワークシート関数で実現する事です。 ・Ctrl-A で全部のセルを選択し、適当な所で右クリックをして「再表示」とすれば  非表示行が表示される方法は既に知っております。  私が知りたいのは「非表示の状態で、非表示行の場所」を知りたいのです。 以上、よろしくお願いします。

  • 別シートのセル値を表示する方法

    どんな計算式(関数が)良いかわからずご教授ください 例)AシートのA1セルに計算式を設定してBシートのあるセル値を表示したい Bシートのあるセル値とは。。。 2行目(固定)にある一番右端にある値(ここでいえば◆。5、6列には入っていないので4列目となる) ◆がなければ3列目の×を表示したい。(可変) セル 1行目 1 2 3 4 5 6 2行目 ○△×◆ よろしくお願いします。

  • エクセルの表示について

    1行目:セルA1+セルB1= C1 2行目:セルA2+セルB2= C2  ・  ・  ・ という計算式を、50行作成します。 C列に、(=A1+B1)という計算式を入れて、1行目のC1とドラグ&ドロップし、50行目まで計算式を入力するとき、 B列に数字が入力されていないときに、計算式の入った C列にも何も表示されないようにしたいんです。 今の状態だと、A列に数字が入っていると、自動的にC列にも数字が入ってしまうので困っています。 当方はエクセル初心者なので、できれば、マクロなど複雑な方法を用いず、解決したいのですが・・・ どなたか御存知の方、アドバイスお願いします。

  • Excelで空白セルをつめて表示させたい

    お世話になります。 Excelの操作について教えてください。     A列  B列 1行  3 2行       2 3行  5 4行  4    1      ↓     A列  B列 1行  3    2 2行  5    1 3行  4 4行 と、空白でないのセルだけを、上に詰めて別のシートに表示させたいです。 出来れば関数を使って行いたいです。 いくつか同じような質問があったのですが、なかなかうまくいきません。 どなたか、ご教授下さい。

  • Excelの表で、行と列の見出しを、そっくりそのまま入れ替えたい。

    Microsoft Excel2000(OS=Win・XP)で表(表の内容は賃金センサスです。)を作成しているのですが、行と列の見出しをそのまま入れ替えて、セルもちゃんと内容に合うように、自動的に入れ替わるような方法って無いでしょうか???もし方法があれば誰か教えて下さい~! (↓表の状態です) ・ワークシートは、入力用・印刷用1・印刷用2の、合計3つがあります。 ・入力用と印刷用1のワークシートは、”行が年齢、列が年度”となっています。 ・印刷用2のワークシートは、”行が年度、列が年齢”となっています。 ・印刷用1のワークシートのセルには、計算式を入れてあり、入力用のワー クシートのセルに入力すると、ある計算をして、自動的に数字が表示され るようにしています。 ・印刷用2のワークシートのセルには、計算式はまだ入れていません。 →印刷用1も2も、列と行が交差するセルの内容は同じだし、どうにか簡単に印刷用2を作成できないかとおもっているのです。

専門家に質問してみよう