Excelマクロについて-コピー範囲とはりつけ先の設定方法

このQ&Aのポイント
  • Excelマクロを使用して、表の特定の部分をコピーして入れ替えながら表示する方法について質問があります。
  • 質問者は、コピーする範囲が毎回変わるため、最終の行を検索してコピーする方法についてアドバイスを求めています。
  • また、はりつけ先の範囲を指定して表の体裁を整える方法についてもアドバイスを求めています。
回答を見る
  • ベストアンサー

マクロについての質問です

表の特定の部分をコピーして、その行列を入れ換えて表示するマクロを作成しました。 Range("G9:J27").Select Application.CutCopyMode = False Selection.copy Sheets("印刷予定").select Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True というようなマクロを組んだのですのが、そこから更に追加したい点がありまして。 まずコピーする範囲が毎回変わるので、最終の行を検索して、そこからコピーできるようにしたいのが1点。 あと、はりつけ先の範囲を指定して、表の体裁を整えられればというのがもう1点です。 それぞれについて、何かよい方法がありましたら教えてください。私自身マクロ初心者で、上記も自動でマクロを作成したので、もっとよい方法があるという方もアドバイスを下さい。よろしくお願いします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.10

これでいけますよ Sub test() Dim x, y, i Dim 入力シート As Worksheet Dim 出力シート As Worksheet '各シート名を設定してください---------------------- Set 入力シート = Worksheets("sheet1") Set 出力シート = Worksheets("印刷予定") Application.ScreenUpdating = False i = 入力シート.Cells(Rows.Count, 10).End(xlUp).Row If i < 10 Then Exit Sub With 出力シート x = .Cells(Rows.Count, 1).End(xlUp).Offset(1).Row y = .Cells(x - 1, Columns.Count).End(xlToLeft).Column If .Cells(1, 1).Value = "" Then x = 4: y = 0 For i = 9 To 入力シート.Cells(Rows.Count, 10).End(xlUp).Row If y < 6 Then y = y + 1 Else x = x + 4 y = 1 End If 入力シート.Cells(i, 7).Resize(1, 4).Copy .Cells(x - 3, y).PasteSpecial Paste:=xlPasteAll, Transpose:=True Application.CutCopyMode = False Next i End With Application.ScreenUpdating = True End Sub

AM1013
質問者

お礼

お礼遅くなって失礼しました。ちょっとコードは変更して使いましたが、なんとか解決しました。 どうもありがとうございました。何度もご解答いただきまして、とても助かりました。今後は今回構築したマクロで仕事が効率よく進められそうです。

その他の回答 (9)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.9

Sub Macro1() COUNTER1 = 0 COUNTER2 = 1 Sheets("Sheet1").Select For INP = 1 To Rows.Count Sheets("Sheet1").Select If IsEmpty(Cells(INP, 7)) Then Exit For Else COUNTER1 = COUNTER1 + 1 Range(Cells(INP, 7), Cells(INP, 10)).Copy Sheets("印刷予定").Select Cells(COUNTER2, COUNTER1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=True Application.CutCopyMode = False If COUNTER1 = 6 Then COUNTER1 = 0 COUNTER2 = COUNTER2 + 4 End If End If Next INP End Sub Sheets("Sheet1")のところは、コピー元のデータが入っているシート名に 変更して下さい。(2箇所あります。)

AM1013
質問者

お礼

別の方の回答で無事解決する事ができました。御忙しい中回答をお寄せいただきまして、本当にありがとうございました。今回構築したマクロで仕事をスムーズに進める事ができそうです。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.8

画像のようになれば良いのでしょうか。

AM1013
質問者

補足

その通りです!!むずかしいでしょうか…

  • mar00
  • ベストアンサー率36% (158/430)
回答No.7

たびたびすいません#2です。 Sheets("コピーデータのシート名").Range(Cells(i, 7), Cells(i, 10)).Copy ではなく Sheets("コピーデータのシート名").Range(Cells(i, 7), Cells(i+4, 10)).Copy です。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.6

#2です。 補足を読んだ感じではG9~J13をSheets("印刷予定")のA1にコピー 続いてG14~J118をSheets("印刷予定")のA6にコピーとなっていけば よいのかと思ったのですが Sub Macro1() Sheets("印刷予定").Select For i = 9 To 10000 Step 5 IF IsEmpty(Sheets("コピーデータのシート名").Cells(i, 7)) Then Exit For Else Sheets("コピーデータのシート名").Range(Cells(i, 7), Cells(i, 10)).Copy Sheets("印刷予定").Cells(i - 8, 1).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True End If Next i End Sub IFとIsEM\nptyの間にスペースを入れてください。 ではダメですか?

AM1013
質問者

補足

説明不足ですみません。 表の体裁が 1 ア イ ウ エ オ カ キ ク ケ コ サ 2 シ ス セ ソ タ チ ツ テ ト ナ ニ 3 ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム          ・          ・ というようになっています(ちなみに横軸はABC…のアルファベット順と思っていただいて結構です)。キ~コ、ツ~ナ、ヘ~ミはそれぞれひとつのグループとしてまとめて認識しています。それで、そのグループごとに縦に並び替えたものを、別のシートに左端から順に貼り付けしていきたいのですが、その際にA~Fの範囲内に限って貼り付けをできたらということなのですが。説明下手ですみません。ご理解いただけますか? それ以外の方法も考えたのですが、単にセルの中の値をコピーして表示するのではなく、着色されているセルはその着色もコピーしたいので、リンク貼り付けでは駄目だということが判明しました。また、着色されたセルを含むデータの抽出は2007以降のバージョンの機能なので、それも使えません。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

#4です >相変わらず出力先のシート名が無いので >sheet2としています 申し訳ありません、書いてありましたm(__)m 表の構成ですが Sheet1(入力シート)  ABC・・・G H I J 1 : 9      あ い う え 10      か き く け 11      さ し す せ :        : 印刷予定(出力シート)   A B C D E 1 あ か さ ・・・ 2 い き し ・・・ 3 う く す ・・・ 4 え け せ ・・・ 5 :     : Sheet1のセルG9~J9を先頭に下方向へ入力したものを 印刷予定シートのA1から順に出力していますが違いますか? 入出力のシート設定部分を追加しました Sub test() Dim x, y, i Dim 入力シート As Worksheet Dim 出力シート As Worksheet '各シート名を設定してください---------------------- Set 入力シート = Worksheets("sheet1") Set 出力シート = Worksheets("印刷予定") Application.ScreenUpdating = False i = 入力シート.Cells(Rows.Count, 10).End(xlUp).Row If i < 10 Then Exit Sub With 出力シート x = .Cells(Rows.Count, 1).End(xlUp).Offset(1).Row y = .Cells(x - 1, Columns.Count).End(xlToLeft).Column If .Cells(1, 1).Value = "" Then x = 5: y = 0 For i = 9 To 入力シート.Cells(Rows.Count, 10).End(xlUp).Row If y < 6 Then y = y + 1 Else x = x + 5 y = 1 End If 入力シート.Cells(i, 7).Resize(1, 4).Copy .Cells(x - 4, y).PasteSpecial Paste:=xlValues, Transpose:=True Application.CutCopyMode = False Next i End With Application.ScreenUpdating = True End Sub 参考まで

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

>なかなか難しく挫折… やりたいことも良く分かってませんが 一寸複雑なので、初心者には難しいと思うよ こういう事でよい? Sub test() Dim x, y, i Application.ScreenUpdating = False i = ActiveSheet.Cells(Rows.Count, 10).End(xlUp).Row If i < 10 Then Exit Sub With Worksheets("sheet2") x = .Cells(Rows.Count, 1).End(xlUp).Offset(1).Row y = .Cells(x - 1, Columns.Count).End(xlToLeft).Column If .Cells(1, 1).Value = "" Then x = 5: y = 0 For i = 9 To ActiveSheet.Cells(Rows.Count, 10).End(xlUp).Row If y < 6 Then y = y + 1 Else x = x + 5 y = 1 End If ActiveSheet.Cells(i, 7).Resize(1, 4).Copy .Cells(x - 4, y).PasteSpecial Paste:=xlValues, Transpose:=True Application.CutCopyMode = False Next i End With Application.ScreenUpdating = True End Sub 相変わらず出力先のシート名が無いので sheet2としています 参考まで

AM1013
質問者

補足

早速コピペして必要箇所のみ修正して使用してみたのですが、うまく作動しません。 いや、作動しているとは思うのですが、その結果がうまく反映されないというか… エラーが出るわけでもなく、私自身圧倒的に知識が不足しているせいもあって、どこが間違っているのかを見つける事ができませんでした。 せっかく回答いただいたのに、それを生かすことができずすみませんです。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

>はりつけ先の範囲を指定して、表の体裁を整えられればというのがもう1点です。 貼り付け先は何処? 表の体制を整えるとは、どのように? Sub Macro1() ActiveSheet.Range("G9", Cells(Rows, Count, 10).End(xlUp)).Copy Worksheets("印刷予定").Range("a1").PasteSpecial Paste:=xlValues, Transpose:=True Application.CutCopyMode = False End Sub コピー先は印刷予定シートのA1にしています 適宜変更してください 参考まで

AM1013
質問者

補足

いただいた回答方法、早速試してみました。 本当にありがとうございます。コピペがうまくできました。 あとは任意の範囲にそれをならべられるようにしたいです。この貼り付けるデータが5行でひとまとまりになっていて、それをたとえばA1~F5まで貼り付けらたらA5~F10へと貼り付け場所を遷移していくようにしたいのですが、できますでしょうか?自分なりに基本となるマクロを自動で作成して、それをうまく統合できないかと思ったのですが、なかなか難しく挫折… よい方法があれば教えてください。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

>最終の行を検索して、そこからコピーできるようにしたい 私自身もマクロを使い始めたはっかりですが 入力されている行が9行目、そこから最終行ということでしょうか。 GYOU = Cells(9, 7).End(xlDown).Row G列最終行 Range(cells(9,7),cells(GYOU ,10)).copy cells(9,7)はG9、cells(GYOU ,10は最終行のJ列です。 Sheets("印刷予定").select Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True で出来ると思いますよ。 >はりつけ先の範囲を指定して、表の体裁を整えられればというのがもう1点です。 は意味がちょっとわからなかったです。

AM1013
質問者

補足

早速の回答、ありがとうございます。 すみません。説明不足でした。一番最初の列にあたるのがG9~J9で、最終行は毎回変動します。また、体裁を整えるというのは、5行でひとまとまりになっているものを、A1~F5まで貼り付けをしたら、次のA5~H10へと遷移していくようにしたいのです。ひとつずつコピーして貼り付けるのを繰り返し、変数iにその貼り付け回数を代入することでできないかと思ったのですが、うまくいかなくて… あと、今更なんですけど。もしかしてリンク貼り付けにして作成したほうが便利なのでしょうか?そうすれば入力したのをいちいちコピペしなくとも、任意の場所に表示させる事ができますよね。

  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.1

Range("G9:J27").Select Application.CutCopyMode = False この2行を削除してしまえば、 「現在選択している範囲」を行列を入れ替えて表示する事が可能ですが。

AM1013
質問者

お礼

別の方の回答で無事問題を解決する事ができました。御忙しい中回答をお寄せいただきまして、ありがとうございました。今後は今回構築したマクロで仕事をスムーズに進められそうです。

関連するQ&A

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • こんなマクロなんですが。

    下記のマクロでエクセルの表からデータ(文字列)を取得するようにしたいとおもっています。 Range("B23").Select Selection.Copy Range("F23").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Range("B24").Select Selection.Copy Range("F24").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("B25").Select Application.CutCopyMode = False Sheets("September 03").Copy Before:=Sheets(2)          ←ここ Selection.Copy Sheets("September 03 (2)").Select                   ←ここ Sheets("September 03 (2)").Name = "September 10"       ←ここ Range("B33").Select Application.CutCopyMode = False ActiveWindow.SmallScroll Down:=-15 Range("F12:L18").SelectEnd Sub と、まだ続くんですが、とりあえずここまでで。 番地のデータを取り込むようにしたいんですが、うまくいきません。 ←ここ っていうのがまさにそれです。

  • Excel 繰り返しマクロ

    下記のようなマクロを使ってn個あるシートの内容を「集計」シートにコピーさせるようにしました。 (自動マクロとの組合せなので、スマートではないかもしれませんが) でも、これだと「集計」シートもコピー作業を行ってしまうので、 「集計」シートはコピー作業をしないように除外したいのですが、どうしたら良いのでしょう? 実際にはシート数は30程度、コピペ項目は1シートあたり30項目程度あります。 よろしくお願いします。 ------------------------- Sub テスト2() ' For i = 1 To Worksheets.Count '案件番号等コピー ' Sheets(i).Select Range("D3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '案件名 Sheets(i).Select Range("F3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '国名 Sheets(i).Select Range("E3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("C4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '選択セルの解放 Application.CutCopyMode = False '行挿入 ' Sheets("集計").Select Rows("4:4").Select Selection.Insert Shift:=xlDown Next i End Sub

  • Excelのマクロ 検索範囲を広げたい

    マクロ初心者です。 マクロが入ってるExcelファイルがあるのですが、 マクロボタンを押しても結果がでないので、たぶんマクロの検索範囲が1列しかなってないみたいなので広げたいのですが、どうしたらよいでしょうか? Sub 検索準備() ' ' 検索準備 Macro ' ' Sheets("データ表").Select Range("A3:ES2002").Select Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Sheets("検索表").Select Range("A4").Select ActiveCell.FormulaR1C1 = "=+R[1]C" Range("A4").Select Selection.Copy Range("B4:ES4").Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Sheets("個人スキル").Select Range("D3:E3").Select End Sub Sub スキル検索() ' ' スキル検索 Macro ' ' ' Sheets("検索表").Select Range("A4:ES4").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1:ES4").Select Application.CutCopyMode = False Selection.Copy Sheets("計算表").Select ActiveWindow.SmallScroll ToRight:=-3 Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Range("F1:J149").Select Application.CutCopyMode = False Selection.Copy Range("L1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.SmallScroll ToRight:=4 Range("L13:P149").Select Application.CutCopyMode = False Selection.Sort Key1:=Range("L13"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("L23").Select Sheets("個人スキル").Select Range("D3:E3").Select End Sub 検索準備ボタンと、スキル検索2種類ボタンがあります。 どこをいじくればよいのか分かりません。 検索表の検索範囲が表題を抜かして人の名前などが入ってる列が1列しかなってないので・・・

  • Excelでマクロを繰り返したい。

    Excelでマクロを記録したら以下のようになりました このマクロを以下の条件で繰り返したいのですが。 Sub Macro1() '------------- '----------------------- ' Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=5*", Operator:=xlAnd, _ Criteria2:="<>5@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=6*", Operator:=xlAnd, _ Criteria2:="<>6@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=7*", Operator:=xlAnd, _ Criteria2:="<>7@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=8*", Operator:=xlAnd, _ Criteria2:="<>8@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 条件= Field:は4~35位まで変動します 一連の動作をコピーして手作業で数字を変えてみたのですが プロージャが大きすぎてエラーになってしまいます。 何か良い方法は無いでしょうか?。

  • マクロの自動記録

    Excelのマクロ自動記録に関する質問です。 ソルバーを繰返し含む処理をマクロの自動記録で実行したいのですが、Excelのシート上で1つづつ手で実行すると問題なく処理出来ている手順を自動記録して実行すると“コンパイルエラー:SubまたはFunctionが定義されていません”とエラーが出ます。 下記の“SolverOk”の部分に問題があると表示されます。 Range("D19").Select ActiveCell.FormulaR1C1 = "180" Range("D19").Select Selection.Copy Range("J19").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("D24").Select Application.CutCopyMode = False Selection.Copy Range("J22").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False SolverOk SetCell:="$M$18", MaxMinVal:=3, ValueOf:="0", ByChange:="$D$19" SolverSolve   ---   --- どうすれば解決できるか教えて下さい。 よろしくお願いします。

  • マクロの記録で作ったルーチンが動きません

    EXCEL2002で「マクロの記録」を使ってこんなマクロを作りました。 <マクロ> Sub Macro1() Sheets("ABC").Select Sheets("ABC").Copy Before:=Sheets(1) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("ABC").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.Delete End Sub これをコマンドボタンの押下に組込、こんなサブルーチンにしました。 <サブルーチン> Private Sub CommandButton3_Click() Sheets("ABC").Select Sheets("ABC").Copy Before:=Sheets(1) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("ABC").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.Delete End Sub これを実行すると4行目のCells.Selectで   実行時エラー'1004'   RangeクラスのSelectメソッドが失敗しました。 となって止まってしまいます。 ■■質問■■ なぜでしょう?<マクロ>の方はエラーになりません。 ■■追加の質問■■ 一方、マクロの方は   選択したシートに、データが存在する可能性があります。データを完全に削除する   には、[削除]をクリックしてください。 となってしまいます。このメッセージを回避する方法ははありますか?

  • このマクロ、何をしているのかわかりますか?

    ' Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1").Select ActiveSheet.PasteSpecial Format:="テキスト", Link:=False, DisplayAsIcon:= _ False Range("A1:A37").Select Selection.Copy Range("S1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Columns("A:A").Select Application.CutCopyMode = False Selection.ClearContents Range("A1").Select End Sub わかる方 お願いいたします!

  • マクロのコピペについて

    に実装する際の2回目の処理について助けてください。 Sub Action1or2() Static ChkNext As Boolean If ChkNext = False Then ChkNext = True MsgBox "1回目の押下です。" ' ' Macro1 Macro Range("L9").Select Selection.Copy Sheets("様式2(管理表)").Select Range("C10").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("様式1-1(作業用) ").Select Range("C9:K9").Select Application.CutCopyMode = False Selection.Copy Sheets("様式3(チェック表)").Select Range("B9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("様式1-1(作業用) ").Select Range("L9").Select Application.CutCopyMode = False Selection.Copy Sheets("様式4(22F倉庫用) ").Select Range("D9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("様式1-1(作業用) ").Select Else ChkNext = False Call Action2 End If End Sub Sub Action2() MsgBox "2回目の押下です。" 'ここに2回目の実行コードを記述 End Sub 2回目に実行ボタンをクリックした際にSheets("様式1-1(作業用) ")のアクティブセルと("Sheets様式2(管理表"))&"様式3(チェック表)")&"様式4(22F倉庫用) ")のA列にアクティブセルの値とイコールの値がある場合、アクティブセルの2行下の行を選択してコピーを行い、各シートの対象セルの行へ貼り付けをする場合どのような記述をすれば良いかご教示ください。 よろしくお願いします。

専門家に質問してみよう