• ベストアンサー

Exselで1度の実行をせず2回目の時に実行させたい

Exsel 2003で次のようなコードを実行するとき 15秒ごとに繰り替えし実行されるのですが、1度目は実行せずに2回目に実行したいのですがどうすればよいのですか教えてください。 お願いします。     Sheets("MAIN").Range("V10:Z98").Copy Destination:=Sheets    ("MAIN").Range("V9") Application.Calculation = xlAutomatic '関数再計算 Application.Calculation = xlManual '関数自動計算の停止

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

カウントを取る。(1ずつ) 奇数の時は実行しない。 偶数の時は実行する。 というのでは? i = i + 1 If i Mod 2 = 0 Then Debug.Print i, "偶数だよ" End If ただしその起動を終了させる条件が不明なので、あくまで参考程度に。

saab8743
質問者

お礼

参考にさせていただいて、実際にやってみて出来ました。 iを何時0に戻すか、ちょっと迷いましたが使えそうです ありがとうございました。

その他の回答 (2)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

ANo.1です。 訂正です。 frag→flag ですか。

saab8743
質問者

補足

理屈はわかるのでがflag(フラグ)を立て方がわかりません。すいません具体的に教えてくださいませんか セルをフラグにして試しては見たのですがうまくいかなかったのです。 よろしくお願いします。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

適当なfragをたてて、初期値をfalseにし、fragがfalseなら処理を実行せずfragをtrueにし、fragがtrueなら処理を実行してfragをfalseに するなどにすればよい。 3回目以降のことが書いていないのでコードは書かない。

saab8743
質問者

補足

一回おきの繰り返しです。3回目は実行せずに4回目に実行です。 以降、ANo.1の補足内容になります。

関連するQ&A

  • Cells(1,3)をRange("C1")に変換

    Sheets(Sn).Range("A1:Z98").Copy Destination:=Sheets(Sn).Range("V9") r=131です 上記のVBAを使用したいのですが求められるのはCells(r-1,3)なのです。そのためにCells(r-1,3)をRange("C130")に変換できないでしょうか よろしくお願いします。

  • Copyコマンドで値のみのコピーをするには

    現在このような形でCopyを実行しています。 Sheets(2).Range("C8")の書式が変わってしましますのでxlPasteValuesなどを使用して値のみのCopyをしたいのですがどう書けばよいのでしょうか Sheets(1).Range("A12").Copy Destination:=Sheets(2).Range("C8") よろしくお願いします。

  • 画面が切り替わらないリンク貼り付け

    先日ここで、セレクトせずに貼り付ける方法を、「コピーメソッドにDestinationプロパティを設定すれば実行することができる」と言うことを教えて頂きました。 Selection.Copy Destination:=Sheets(2).Range("Z59:AG97") 今度は同じようにセレクト(画面が切り替わらない)せずに、リンク貼り付けを行いたいのです。自分なりにアレコレ試してみましたが、如何しても上手くできません。どのようにすればいいのでしょうか? よろしくお願い致します。

  • Excelのグラフがちらついて見苦しい

    掲題につき困っています。WinXL Excel2Kが環境です。 リアルタイム関数(楽天RSS)を使ってデータを採取し、数種のグラフを 表示しています。最初はデータが変るたびに一斉にぴくぴく動くものかと思っていましたが、別のグラフでは動かないものもあることに気がつきました。それでステップごとに進行を止めて原因の個所を調べようとしましたが見つかりません。  Worksheet_Calculate()でデータが変化したら処理しています。。 データ処理中に新しいイベントが発生しロジックが混乱しないよう Application.Calculation = xlManualで自動計算を制限。一連の計算を 終わってApplication.Calculation = xlAutomaticとしています。 ScreenUpdatingでの制御はやっています。 解決策があるものでしょうか。宜しくお願いいたします。

  • ExcelVBA 実行時エラー

    お疲れ様です。 下記のExcelVBAでのプログラムなのですが、 なぜかいつもSelection.PasteSpecial Paste:=xlValuesの部分にデバック表示が出てしまいます。分かる方、少しのヒントでも良いので連絡ください。ちなみにプログラムは1997年にかかれたものです。 本当に困っています。宜しくお願い致します~。 ~~~~~~~~~~~~~~~~~~~~~~~~ Dim Bu, D_in, D_Copy As String D_Copy = ActiveSheet.Name 'マクロ実行Sheet(データ入力Sheetをコピー) Bu = Mid(D_Copy, 3, 3) '部コードを抽出 D_in = ("D-" & Bu) 'データ入力Sheet Msg = "前月データを複写してもよろしいですか?" Msg_ret = MsgBox(Msg, vbYesNo) If Msg_ret = vbNo Then End Else End If 'マクロ実行Sheetのデータをクリアする Range("Clear").Select Selection.ClearContents '上代売上単月データを一覧表にコピー Sheets(D_in).Select Select Case Month(Date) Case 4 Range("JT1,JT2").Copy Case 5 Range("JT3,JT4").Copy Case 6 Range("JT5,JT6").Copy Case 7 Range("JT7,JT8").Copy Case 8 Range("JT9,JT10").Copy Case 9 Range("JT11,JT12").Copy End Select Sheets(D_Copy).Select Range("B6").Select Selection.PasteSpecial Paste:=xlValues '在庫単月データを一覧表にコピー Sheets(D_in).Select Select Case Month(Date) Case 4 Range("Za1,Za2").Copy Case 5 Range("Za3,Za4").Copy Case 6 Range("Za5,Za6").Copy Case 7 Range("Za7,Za8").Copy Case 8 Range("Za9,Za10").Copy Case 9 Range("Za11,Za12").Copy End Select Sheets(D_Copy).Select Range("AD6").Select Selection.PasteSpecial Paste:=xlValues '上代売上累計データを一覧表にコピー ' 9月と3月はマクロの実行なし Sheets(D_in).Select Select Case Month(Date) Case 4 Sheets(D_Copy).Select Range("A6").Select End Case 5 Range("Ru1,Ru2").Copy Case 6 Range("Ru3,Ru4").Copy Case 7 Range("Ru5,Ru6").Copy Case 8 Range("Ru7,Ru8").Copy Case 9 Range("Ru9,Ru10").Copy End Select Sheets(D_Copy).Select Range("B52").Select Selection.PasteSpecial Paste:=xlValues End End Sub

  • エクセルVBAでもっと早く転記

    エクセル2000です。 以下は、列をコピーし行にペーストする作業を含むVBAですが、もっとスマートに早く転記する方法がありましたらご教示ください。 お願いします。 Sub TEST() With Application .ScreenUpdating = False .Calculation = xlCalculationManual Sheets("データ").Range("B8:DH8").ClearContents With Sheets("入力") .Range("G8:G68").Copy Sheets("データ").Range("C8:BK8").PasteSpecial Paste:=xlValues, Transpose:=True .Range("G14:G15").Copy Sheets("データ").Range("BM8:BN8").PasteSpecial Paste:=xlValues, Transpose:=True Sheets("データ").Range("BQ8") = .Range("G21") Sheets("データ").Range("BR8") = .Range("G23") .Range("G25:G29").Copy Sheets("データ").Range("BS8:BW8").PasteSpecial Paste:=xlValues, Transpose:=True .Range("G32:G68").Copy Sheets("データ").Range("BX8:DH8").PasteSpecial Paste:=xlValues, Transpose:=True End With Application.CutCopyMode = False .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub

  • 実行時エラー”1004”アプリケーション定義または

    次のようなコードで10の平均と20の平均はエラーにならないのですが75の時のみエラーになります Sheets(SN).Cells(gyou, 22)のセルにはすべて数字があるのですがエラーになります。 エラー”1004”アプリケーション定義またはオブジェクト定義のエラー au = 100 sk1 = 10 sk2 = 20 sk3 = 75 If WorksheetFunction.Sum(Range("V90:V99")) <> 0 Then Sheets(SN).Cells(au, 24).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Cells(au - (sk1 - 1), 22), _ Sheets(SN).Cells(au, 22))) End If If WorksheetFunction.Sum(Range("V75:V99")) <> 0 Then Sheets(SN).Cells(au, 25).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Cells(au - (sk2 - 1), 22), _ Sheets(SN).Cells(au, 22))) End If If WorksheetFunction.Sum(Range("V25:V99")) <> 0 Then Sheets(SN).Cells(au, 26).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Cells(au - (sk3 - 1), 22), _ Sheets(SN).Cells(au, 22))) エラーの原因を教えてくださいよろしくお願いします。

  • オブジェクトが定義されていません

    以下のコードを実行すると「オブジェクトが定義されていません」とエラー表示されます。 オフィス2003、エクセルVBAです。 Withの使い方がまちがっているのでしょうか? 分かる方教えてください。 お手数をおかけしますがよろしくお願いします。 intGyou = Int(intDeley(i) * 2) With ThisWorkbook.Sheets(\"default\") If intDeley(i) = 0 Then .Range(\"Y7:Y1446\").Copy _ .Range (\"Z7:Z1446\") Application.CutCopyMode = False Else .Range(.Cells(intGyou + 7, 25), .Cells(1446, 25)).Copy _ .Range (\"Z7\") .Range(.Cells(7, 25), .Cells(intGyou + 6, 25)).Copy _ ThisWorkbook.Sheets(\"default\").Range(.Cells(1447 - intGyou, 26), .Cells(1446, 26)) Application.CutCopyMode = False End If End With

  • エクセルVBA実行エラーの対処方法

    以前教えていただいた構文ですが、NOWより過ぎてない日付がFirstRow 31より有り、過ぎた日付がない場合に実行するとエラーが出ます。これを回避するのを教えてください。 宜しくお願いします。 Const DateColumn = "B" '日付が入力されている列 Const FirstRow = 31 '削除の対象となる可能性がある最初の行 Dim LastRow With ActiveSheet LastRow = .Range(DateColumn & Rows.Count).End(xlUp).row If LastRow <= FirstRow Then MsgBox "処理すべきデータがありません。" _ & vbCrLf & "マクロを終了します。" _ , vbExclamation, "データ無し" Exit Sub End If With Application .ScreenUpdating = False .Calculation = xlManual End With .Range(DateColumn & FirstRow - 1 & ":" & DateColumn & LastRow) _ .AutoFilter Field:=1, Criteria1:="<=" & Now, _ Field:=1, Criteria2:="", Operator:=xlOr .Range(DateColumn & FirstRow & ":" & DateColumn & LastRow) _ .SpecialCells(xlCellTypeVisible).EntireRow.Delete .Cells.AutoFilter End With With Application .CutCopyMode = False .Calculation = xlAutomatic .ScreenUpdating = True End With

  • Excel VBAでのExcelのヴァージョン違いで、デバッグがかかる?

    Excel2000では、デバッグがかからず実行出来るのですが、Excel2002・2003ではデバッグがかかってしまいます。 症状は Excel2002では 「実行時エラー’9’  インデックスが有効範囲にありません」 Sheets("KNS").Copy After:=Workbooks("施工請求SAM").Sheets(Sheets.Count) Excel2003では 「実行時エラー’1004’  RangeクラスのCopyメソッドが失敗しました」 .Range("A3").CurrentRegion.Copy Destination:=WS2.Range("C2") とデバッグがかかってしまいます!! ヴァージョンがアップしているのに・・・??状態です。 何か、不必要コマンドを入力しまっているのでしょうか?

専門家に質問してみよう