• 締切済み

「プロシージャの分け方について」助けてください…

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

内容的にまとまった部分をSuBプロシージャーに分けて(どちらかというと無理やりに)(引数で変数データを渡さなくて良い単位にできればなお良い) Private Sub Worksheet_Change(ByVal Target As Range) ここにある程度主要な部分は今のまま温存しておき Call SUB1 Call Sub2 ・・・・ End Sub のようにしてみましたか。Callは不要。 Sub Sub1() 切り分けたコード End Sub Sub Sub2() 切り分けたコード End Sub

sdlabxx2
質問者

補足

下記記述コードをそのままSub Sub1()とし、標準モジュールに突っ込んでみましたが、Call Sub1で呼び出すことができません。。 プログラム自体まだまだ不慣れなもので。。。 下記記述コードをそのままSub Sub1()とすること自体が間違っているのでしょうか…

関連するQ&A

  • Excel VBA イベントプロシージャを2つ記述する(基本です)

    基本的な事なのですが、Excelのイベントプロシージャで2つプログラムを作るにはどうやって記述すればよいのでしょうか? 具体的には、worksheetのchangeイベントで、セルC5の値を変えた時と、セルG7の値を変えた時の2通りのマクロを作成したいのです。 Private Sub Worksheet_Change(ByVal Target As Range) C5を変えた時の処理 End Sub Private Sub Worksheet_Change(ByVal Target As Range) G7を変えた時の処理 End Sub このように書けばよいのでしょうか?そうするとTargetがかぶっておかしくなる気がします。。 お願いします。

  • ExcelにおけるDDEデータのイベントプロシージャについて

    DEEをつかって、Excelのセルにデータを出力しています。 そのセルのデータが変更された時に、自動でそのデータをコピーし別のシートにペーストしたいのですが、よろしければ助言をお願い致します。 イベントプロシージャの(worksheet_change)で試してみたのですが、任意でセルの値を変えないとプロシージャが動かず行き詰りました。 VBAも超初心者なのですが、よろしくお願い致します。

  • EXCEL VBA イベントプロシージャを

    一枚のシートにWorkseet Changeプロシージャを複数入れたいと思いますがこれは可能でしょうか? やってみると「名前が適当ではありません」というエラーがでてしまうのですが。 よろしくお願いします。

  • イベントプロシージャ『 Worksheet_Change 』の対象セル

    イベントプロシージャ『 Worksheet_Change 』の対象セルを『 コピー貼付 』の際 どんな方法で貼り付けてもマクロがフリーズすることがなくなる方法をご存知の方が いらっしゃいましたら、是非その方法を教えて下さい。 『 Worksheet_Change 』対象セルの『 コピー貼付 』の際、ツールの『 編集 』から 『 貼り付け 』の手順で『 Worksheet_Change 』対象セル宛に情報を貼り付けてみた 場合は特に問題なく情報が貼り付いてくれます。 『 Ctrl+V 』で貼り付けた場合も問題なく情報が貼り付いてくれます。 しかし、コピー後に貼り付け先のセルを右クリックして『 形式を選択して貼り付け 』の手順での 貼り付けをしようとすると、必ず決まってマクロがフリーズしてしまいます。 そのため、その度にウィンドウ右上の閉じるボタン『 X 』をクリックして『 保存しますか? 』を 『 キャンセル 』してマクロのフリーズを解除している状況です。 コピー元のセルと貼り付け先のセルは共にセル結合されている状態ですが、この『 セル結合 』は マクロのフリーズとは無関係のことと思われます。 何か良い解決策をご存知の方、どうか宜しくお願いします。

  • プロシージャをコンパイルするとフリーズ

    プロシージャを.sqlファイルに記述し、sql*plusより.sqlファイルを実行すると途中で反応がなくなります。別端末よりsvrmgrlからshutdown immediateを行おうとしてもレスポンスがかえってこなくなります。abortは受け付けてます。 CreateTableでも同じことが起きてますが、こちらは一定の長さまでのCreate文は受理し、途中で止まってしまいます。その後はプロシージャのときと同じです。 どうもスクリプトが長いと途中で止まっているみたいなのですが、なんで止まるのかがわかりません。 なにか対処方法がありましたら教えてください。使用しているのはOracle8i サーバはSolaris です。(バージョンはわかりません)

  • Excel2010 イベントプロシージャが動かない

    VBAはほとんどいじったことのない初心者です。 イベントプロシージャをインターネットから探してきて、コピペして使おうとしてます。 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ERR_HANDLER If Target.Address(False, False) = "E2" Then ActiveSheet.Name = Range("E2").Value End If Exit Sub ERR_HANDLER: MsgBox "現在のE2セルの値はシート名にできません。" End Sub やりたいのは、セルE2の値に変更があったら、そのセルの値をシート名にしたいということです。 初心者には難しいでしょうか? ご教示いただけると幸いです。 よろしくお願いします。

  • ストアドプロシージャのbegin、end

    下記の様なストアドプロシージャを作成し、VB側から実行させています。 どうしても、★SQL文2★の後のreturn文を実行してくれません。 (VB側ではreturn値が0と判断します。) このreturn文を★SQL文2★の前に移動すると、return値が-1として正常に取得できます。 begin、endのブロックの記述に何か間違いがあるのでしょうか? 環境:sqlserver2000,windows2000,vb6 よろしくお願いします。 CREATE PROCEDURE [sp_AAA] @PARAM1 varchar(16) AS begin if (~) begin ★SQL文1★ if (@@ERROR <> 0) begin return @@ERROR end end ★SQL文2★ return -1 ←ココ end

  • worksheet_changeがループする

    worksheet_change イベントでの質問です。シートに文字が入力された時に、他のセルに値をコピーしたいのですが、一つ目の値を代入した時点で、再びchangeイベントが発生して、この関数の頭に戻ってしまいます。実行中は、changeイベントを発生しないようにできないのでしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i, j As Integer j

  • マクロのプロシージャーが大きすぎる・・

    自動マクロで作成した二つのマクロをコピーして結合させました・・そして実行しようとするとプロシージャーが大きすぎるために実行できません、のエラーが出ました。マクロの余分なところを削除して軽くするしか方法がないでしょうか?他に方法があればご教授ください。よろしくお願いします。

  • プロシージャ作成がしたい

    SQL*Plusに下記のコードを記述したところ 「警告~」という内容のエラーが起こってしまいました。 どうしてコンパイルがうまくいかないのでしょうか? 初めてPL/SQLを勉強しているのでひとりで長いこと悩んでます。。。 どなたかご協力お願いします! SQL> CREATE OR REPLACE PROCEDURE ProcA( 2 i1 IN NUMBER, 3 i2 IN NUMBER, 4 o1 OUT NUMBER) IS 5 BEGIN 6 o1 = i1 + i2; 7 RETURN; 8 END; 9 / 警告: プロシージャが作成されましたが、コンパイル・エラーがあります。