• 締切済み

エクセルマクロの自動実行について

pati5090の回答

  • pati5090
  • ベストアンサー率50% (1/2)
回答No.1

書式設定が問題なのでしょうか? であれば、書式設定を設定したテンプレートを別ファイルor別シートで作れませんか? (ユーザーが変更できないように、シートを非表示にしておくなどの工夫も必要) 流れとしては、 (1)テンプレートファイルを開く(シートの場合は不要) (2)コピー範囲を選択してコピーする。 (3)テンプレートファイルorシートにペーストする。 (4)-1. 1グループ1IDでファイル保存してよければ、 テンプレートファイルを別名保存して(1)に戻る。 (4)-2. 1グループ1シートの場合は、ペーストしたシートをコピーして別名にする。 テンプレートのシートをクリアして(1)に戻る。 後、ID毎に並び替えしてよいのであれば、 IDの変わり目をループでチェックして範囲指定でコピーした方が1行ずつよりは良い気がします。

yoshikadu
質問者

お礼

アドバイス有難うございます。 詰まっていたのは、値貼り付けだと時分秒(「::」部分)が「そのままの形式」で貼り付けされないことでした。 やろうとしていたのは、ID値を調べどのグループ(AとかBとか)に所属するかを決定し、 ID~項目4までをままの形式で別シートにグループ分け&ソートして貼り付け、でした。 (コントロールボタンに↑の処理を組み込んで処理したかったのです。) rangeオブジェクトで扱えば出来ることは調べて分かりましたが、その場合セルを特定(”A1:B3”とか)する方法しか知らず変数でカウントアップの方法を模索していました。 アドバイスを参考にしながら、もう少し調べてみます。

関連するQ&A

  • エクセル マクロを自動実行

    仕事で使っている書式で、A1に「あいうえお」と入力すると、A2「あ」、B2「い」、C2「う」、D2「え」、E2「お」とMID関数で振り分け、入力後、A行を「表示しない」と「再表示」するマクロをボタンで実行するようにしています。 そこで、 この書式には必ず入力しなければならない項目があるので(非表示しない行のセル)、この項目に入力したら行の非表示マクロを実行し、空白なら行の再表示マクロを実行出来るようにしたくて調べているのですが見つかりません。 1クリックの手間を省く方法をご存知の方ご教示ください。 宜しくお願いします。

  • マクロの自動化

    お世話になります。 このたびエクセルでマクロを利用してある計算をしようとしたところ、行き詰ってしまったので質問させてもらいます。 やろうとしている計算は定数が4つ、変数が1つの3次関数の変数をゴールシークをつかって解くというもので、ゴールシーク動作のマクロ化までは成功しています。 ちなみに一応式を書いておくと以下のような感じです。 変数:x 定数:a b c d ax^3+bx^2+cx+d=0 では何に行き詰っているのかというと、そのゴールシークマクロの自動化です。 私の目指す自動化というのは、定数部分abcdが変化した際に変数の解が自動で導き出されるというものです。 しかし、私が探して見つけた目指す自動化に近い自動化の方法はどれも 定数セル内が変更された際に自動で再計算を行うというものでした。 今回の私のエクセルでは、各定数を求めるまでに相当長い計算プロセスがあり 必要な数値の入力(数字)⇒別セルへリンク&計算⇒最終的な定数の算出 となっているため、最終的な定数の算出のセルでは例えば=A363などとなっているためセル内が変更されたとは見なされず、再計算をしてくれません。 また、最初の必要な数値の入力において数値が変化したときにマクロを自動で走らせようにも その数が多すぎてとても追いきれません。 分かりにくい質問となってしまったと思いますが、どなたか私が目指す自動計算の組み方を教えていただけないでしょうか。 もちろん、ゴールシークやマクロにこだわらず、自動で計算してくれる方法があるのであればそれでも構いません。 よろしくお願いいたします。

  • エクセルでの自動抽出がうまくいきません

    エクセル2000で自動抽出機能を使用しましたが最初の行の項目だけ重複して抽出されます。直す方法はありませんか?自動抽出の方法はデータセルを指定してデータ→フィルタ→フィルタオプションの設定→選択範囲内をデータのセルに指定、指定した範囲を抽出先のセル指定、重複するレコードは無視するにチェックをいれokです。なお上記のマクロは次のようになっています。Sub 商品名の集計() ' ' 商品名の集計 Macro ' マクロ記録日 : 2002/6/30 ユーザー名 : ky ' ' Range("D8:D22").Select Application.CutCopyMode = False Range("D8:D22").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "B26:B36"), Unique:=True Range("A26").Select End Sub 以上よろしくお願いいたします。

  • エクセルのマクロ

    Range("A1") = Range("F1") のような式で 3000行分のセルに対して処理を行いたい場合、 A1からA3000まで上の式を繰り返して書くしかないのでしょうか。 宜しくお願いします。

  • マクロの自動実行

    Excel2007を使用しております。マクロ初心者です。 以下のようなことをExcelで実現したいと思っています。 ある列すべてに同じリストが登録されてあり、 その列のセルから"○"がリストから選択されましたら、自動的に同じ行の右の列のセルが自動的に"○"がつく というようにExcelに登録したいのです。 いろいろと検索をしたのですが、検索の仕方が悪いのかこれといった答えの書いてあるサイトが見つかりません。 ※リストの登録の仕方まではわかりますが、それ以降がわかりません。 この問題の解決策を、もしくはこの問題を解決できるサイトをご教授願います。

  • EXCEL VBA セルの移動に変数を・・・ 

    VBAを使って    ・    ・    ・   Case "$H$4" Range("D5").Select Case "$H$5" Range("D6").Select  と書き 「H4のセルまで行けばD5へ、H5のセルまで行けばD6へ」といったようにだんだん下へセルが下がっていくように作成していたのですが必要な行が増えてきて、1行ずつ書いていくことが難しくなり、変数を使いたいのですが使い方が分かりません。 分かる方、意見を下さい。

  • エクセルマクロで値入力時に時間が自動入力できる

    あるセルに値が入力されたら、 他の場所にその時間が入力されるような エクセルマクロを作りたいと考えています。 インターネットで調べて 下記の様にして1ヵ所だけは入力できるようになりました。 '時間の自動入力 Private Sub Worksheet_Change(ByVal Target As Range) 'Dim k As Long 'i = 9 If Intersect(Target, Range("C8")) Is Nothing Then Exit Sub Else d2 = Time Range("G8").Value = d2 End If End Sub 上記のマクロだと C8固定になってしまうので、 C8~C100で 上から順番に入力したときに それぞれの入力時に動作するように 変更したいと考えています。 そこで変数を設定し、ifで1つづつ変数を増やす処理を入れる前に 実験的に以下の様に書き換えてみたのですが、 Dim i As Long i = 9 If Intersect(Target, Cells(9, 3)) Is Nothing Then 動作しませんでした。 インターネット上に載せてくれている方の情報では range用 みたいなことを書いてあるのを見たのですが、 やはりこの方法ではうまくいかないでしょうか? よろしくお願いします。

  • エクセル2003でマクロをおこないましたが実行時エラー1004が発生します

    WindowsXP、Excel2003の環境でマクロ実行時のエラーについて解決法を教えてください。 先日http://okwave.jp/qa5089017.htmlにて、 下記のとおりマクロを教えていただいたものです。 Sub 行の高さの自動調整() '行の高さの自動調整 Cells.EntireRow.AutoFit '行を大きくするための倍率 BAIRITU = 1.5 '最終行の指定 MAXGYO = 300 '1行目から最終行目までを順番にチェックするために「IX」変数を使用する。 IX = 1 'IXが最終行以下の場合、この処理を続ける。 Do While IX <= MAXGYO Rows(IX).RowHeight = Rows(IX).RowHeight * BAIRITU IX = IX + 1 Loop End Sub 1回目は正常にマクロを実行することができましたが、 内容を改め再度マクロを実行したところ 「実行時エラー ’1004’ RangeクラスのRowHeightプロパティを設定できません」 とエラーが出ます。 デバックをクリックすると 「Rows(IX).RowHeight = Rows(IX).RowHeight * BAIRITU」 の行がマーカーにて指摘されますがどうすべきかわかりません。 マクロの実行前に、 対象範囲についてセルの保護や結合がないかを確認しましたが、 いずれもありませんでした。 解決法をご教示ください。 よろしくお願いします。

  • エクセルのマクロでデータを左につめていく

    お世話になります。エクセル2002でマクロを作成しようと思っています。 毎回同じ処理をしているので、良いサンプルがあったら教えてください。 やりたいこと  A列からF列にランダムにデータが入力されています。  このデータをA列、B列、C列と、左に詰め表示させたいです。  ※G列以降にもデータが入力されていますが、処理したい列範囲はA列~F列です。  ※行数は、都度変わります。(UsedRange.Rows.Countで値を取得) イメージ(処理前)  -  : 空白セル  *** : データが入力されているセル     A列   B列  C列  D列  E列   F列 1行目 項目1 項目2 項目3 項目4 項目5 項目6 2行目 ***  ***  -   ***  *** - 3行目 - -   -  *** *** *** 4行目 ***  -   -   -   -   -  5行目 *** *** -   *** -   -  イメージ(処理後)     A列  B列  C列   D列  E列  F列 1行目 項目1 項目2 項目3 項目4 項目5 項目6 2行目 ***  ***  -   ***  *** - 3行目 *** *** *** - -   - 4行目 ***  -   -   -   -   -  5行目 *** *** *** -   -  -

  • エクセルのマクロについて

    エクセルのマクロについて 領域の範囲選択→貼り付けの繰り返し処理をループで考えています。 領域の範囲選択し、貼り付け処理をマクロの自動記録で、出してみました。 Sub Macro1() Range("E6:G12").Select Selection.Copy Range("E17").Select ActiveSheet.Paste Application.CommandBars("Stop Recording").Visible = False End Sub この時に、「Range("E17").Select」の命令は「Cells」関数に置き換えられるのですが、「Range("E6:G12").Select」のように複数のセルの領域選択をする際に、「Cells」関数ではできないのでしょうか。 「Cells」関数を使えば、行列を数値にし、変数を使えば、LoopかFor命令で繰り返し処理ができるのですが、わかる方、解答ください。よろしくお願いします。