• 締切済み

VBAでCallを使えば処理軽くなりますか?

VBAでシフト表作成シートを作っていて、そこそこ重い処理を入れてるのですがcallで処理をした方が軽くなったり少し早くなったりしますか?

みんなの回答

  • kkkkkm
  • ベストアンサー率65% (1619/2458)
回答No.2

Callするものによる

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.1

Excelでしょうか? Excelを使用している限り大差ないと思います。 Excel VBAでデータ処理やらせたとき、余り物遅さにブチ切れてAccessに移植したことがあります。処理完了にかかる時間は大幅に減りました。 今ではAccessもやめてVisualBasicにSQLServerで処理させています。その方がAccessより早いことが多いし、メンテナンス性が向上します。 ※データが飛んだときのことを考えてSQLServerは別のパソコンを使用。 ちなみに・・・ExcellからAccessに移植したモノは、Excellだと30分かかっていた処理がAccessだと10分ちょっとになりました。最大で6分の1に短縮できています。 処理時間の大幅短縮の理由は「インデックス」。 データを探して選択するような場合に、その項目をキー項目として定義すると検索時間が大幅に短縮されます。Excelではキーを設定することが出来ません。出来たとしても複雑さが増すだけだしバージョンが変わると動作が変わったり使えなくなったりするので可能な限りそういう便利機能は使いたくありません。 それに対し、Accessの様なデータベースではそういう機能は標準装備です。 VB+SQLServer版は作っていないので比較は出来ませんが、SQLServerは数人で同時処理が可能になるので、用途に応じて使い分けています。 ちなみに・・・VBもSQLServerも今は無料で使うことが出来ます。無料故に説明書はなく自分でネットを探す必要があります。 一言で言えば「敷居が高い」となりますが、その恩恵はかなりのモノとなります。 シフト表の作成だと、Pythonという言語をExcelから利用して機械学習させる・・・という方法がネットで紹介されていた記事を読んだことがあります。 確かYouTuberの人も実演を交えて紹介していました。 気になったら探してみてください。

関連するQ&A

  • VBAの構文をご指導お願いいたします

    EXCELでシフト表を作成していますが次の操作をVBAで処理したいと考えていますが初心者で難しく教えて頂きたく宜しくお願いいたします。 1.sheet1でB1~AF1に日付、A2~A15に名前、日ごとに担当者を決め役割を記号(1)、(2)、(1)、(2)、等の記号をセルに入れてAさんは1日には(1)2日は(2)とこんな感じでシフト表を作成しています 2.Sheet2のB1~AF1に日付、A2に(1)、A3に(1)、A4に(2)~と記号を入れ、シフト表の逆で例えば1日の(1)は誰が担当者かを分かるようにSheet1のシフト表からSheet2のセルに担当者を代入する表を作りたいのです(ここの構文を教えて頂きたい)。Range("A1").Valueでお願いしますRC形式だと分からないのです勝手で説明が下手ですいません、何卒宜しくお願いたします。

  • 【VBA】セルとシート操作の繰り返し処理

    添付画像のような、5行10列からなる1つの表を、2行間隔で作成しています。 VBAを使って、下記のような繰り返し処理をしたいと思っております。 処理1:シート(1)の表に、1行間隔でセルの塗りつぶし色を付ける。 処理2:このシート(1)をコピーして、test(1)~(6)までの6シートを作成する。     ※コピーしたシート名を「test(1)~(6)」に変更する 処理3:コピーしたtest(2)の「B2」「B11」「B20」「B29」「B38」値を「6」~「10」にナンバリングし、     同様にtest(3)~test(6)のB列の番号も「11」~「30」に変更する VBAを使って、添付画像のようなのような処理1~3の繰り返し行うことは可能でしょうか? うまく説明できず申し訳ございませんが、画像を参考にしていただければと思います。 もし可能であれば、その方法を教えてください。 お手数お掛けいたしますが、よろしくお願い致します。

  • VBAで範囲に特定の文字があるかを調べたいです。

    vbaを使ってシフト表作成シートを作ってるのですが、週一で休みが必ずあるかの検知システムを作りたいのですが案が出てきません。 どなたか教えてくれる方はいませんか? できるだけ簡単なものを教えて欲しいです。 自分で調べろなどの回答は大丈夫です。

  • EXCEL VBAでのマッチング処理

    超ど素人なので教えて下さい。EXCEL2000のVBAで教育の受講者数自動化をしようとしています。Sheet1にピボットテーブルで作成した表(P表)があり、その表(P表)を元にSheet2の表(マスタ)に登録すると言うものです。説明が至らなく申し訳ないですが、マスタ表へ登録処理する際に考え付く注意点(名前の変更、行・列の削除など)も含め、お教え下さい。判りにくいかもしれませんが、一応図も登録しましたので、見てください。

  • VBA 同じ処理のボタンを複数のシートに配置

    VBA初心者です。 VBAで進むボタン1つを作成し、このボタンに下記の処理をさせます。 sheets("シート名").range("b1")=range("b1")+1 今の所、こちらはうまく処理されます。 しかし、違うシートにこの進むボタン2つ目を作成し、同じ処理をさせた場合、2つ目進むボタンだけうまく処理されません。 ※1つ目の進むボタンはうまく処理されます。 1つ目、2つ目の進むボタンを処理させるにはどうしたらいいでしょうか。 ちなみにそれぞれ別のシートに15個ほど進むボタンを作成したいです。 よろしくお願いいたします。

  • VBA Callについて

    vbaで範囲のデータを消すときに sub test … range(a1:a6).clearcontents … end sub にしてるのですが、 sub リセット range(a1:a6).clearcontents endsub を作っています。 (リセット要らなくないと思うかもしれませんが、必要なのである前提でお願いします) これは上記のやり方(test)と sub test … call リセット … end sub どちらの方が処理軽いですか?

  • コール酸処理

    最近タンパク実験を始めました。 膜タンパクを精製する際に可溶化を行うのですが、コール酸処理を行いました。 このコール酸処理は界面活性剤であることは理解しています。 ですがどのような作用があるかわかりません。 教えていただけないでしょうか?

  • VBA処理でこんな条件処理ってできますか?

    VBA初心者です。VBAで下記の様な処理は可能でしょうか? 実行したい処理を箇条書きにしますのでご意見下さい。 不明点はご質問下さい。尚、期限がありますので、早めの回答よろしくお願いします。 ・EXCELシートはテーブル、データ、合計値入力用があります。  テーブルシートは10列程の数値があります。これを順番にデータシートに該当する数字を検索して行き(データシートには規則的に空白行が1行ごとに入っています)、あればその下にある数値を覚えておき、1つのデータの検索が終了したら、合計値シートの1つのセルに合計値を入力。これの繰返しです。 初心者の私には複雑な処理に思えるのですが、どなたかアドバイスよろしくお願いします。    

  • エクセル VBA Call

    VBA初心者です。 callというのを知ったのですが、 ------------------------------- sub aaa() Dim z As Integer For z = 1 To 30 Step 1 Dim y As String y = Cells(2 + z, 3).Value Dim x As String x = Cells(2 + z, 2).Value ・ ・ call m1 call m2 call m3 call m4 ・ ・ next z end sub という記載があって呼び出し元に sub m1 sheet(y).select と書きたいです。この y とか x を先に記載した内容と同じ 認識にするにはどうしたら良いですか。 ど素人に分かるようにお願いします。教えてエクセル大先生。

  • エクセルの関数・VBAについて教えて下さい。

    貸借対照表をエクセルで作成しています。 シート1には、各科目に残高を入力し、それぞれの小計・合計を算出するように関数を組んでいます。 シート2には、出力用の表を作成しており、シート1を元に表に科目と残高、合計を反映するように作成中です。 分からない点は、シート2に金額等を反映させる際に、シート1で0円だった科目を反映させないようにするにはどうしたら良いでしょうか?また、その分の行を空白にせずに残高のある科目を反映させるようにするにはどうしたら良いでしょうか? できれば関数で設定したいのですが、関数では上記処理の設定ができなければ、VBAでの設定を教えてください。 よろしくお願いします。

専門家に質問してみよう