• ベストアンサー

エクセルでマクロにてセル色と文字を他シートのセルへコピーしたい

他質問者様へのご回答を検索し、自分なりに挑戦してみましたがVBA初心者の為うまくいかず、どなたかご指導いただけないでしょうか。 現在エクセルにて、sheet1のA1からA5000のセルに入力した文字と色(他書式は必要ありません)をsheet2のF1からF5000へ自動でコピーという動作を何ヶ所かしたいのですが、マクロのコードを教えて下さい。 お時間のある方、どうぞ宜しくお願いします。

  • r1220
  • お礼率66% (4/6)

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

またまた登場、myRangeです。 >色のコピーが上手くいきません 「文字」の色をちゃんとコピーしてますが、 まさか「セル」の色と勘違いるのではないでしょうねぇ。 質問には、「文字」の色とありますよね。  ●今回のサンプルでは、セルの色 にしてあります●   >A列をF列へ、B列をG列へ、C列をH列へという感じです。 この組み合わせが少なければ 下記のように、列を変えて必要な分だけコピーすればいいですね。 '-------------------------------------------- Sub Test3333() Dim R As Long Sheets("Sheet1").Select For R = 1 To Cells(Rows.Count, "A").End(xlUp).Row Sheets("Sheet2").Cells(R, "F").Value = Cells(R, "A").Value Sheets("Sheet2").Cells(R, "F").Interior.ColorIndex = Cells(R, "A").Interior.ColorIndex Next R For R = 1 To Cells(Rows.Count, "B").End(xlUp).Row Sheets("Sheet2").Cells(R, "G").Value = Cells(R, "B").Value Sheets("Sheet2").Cells(R, "G").Interior.ColorIndex = Cells(R, "B").Interior.ColorIndex Next R For R = 1 To Cells(Rows.Count, "C").End(xlUp).Row Sheets("Sheet2").Cells(R, "H").Value = Cells(R, "C").Value Sheets("Sheet2").Cells(R, "H").Interior.ColorIndex = Cells(R, "C").Interior.ColorIndex Next R End Sub '--------------------------------------------------- 組み合わせが多ければ、また別な方法があります。 更に言えば、規則的であれば、また別な方法もあります。 が、それらは、先ず、上記サンプルのような基本的な使い方を理解してからでいいのでは、 と考えます。 以上ここまで。

r1220
質問者

お礼

myRange様 無事に処理出来ました。言葉足らずで申し訳ございません。文字とセル色とお伝えするべきでした。 しかし、前回ご教授頂いた文字の色も今回一緒にコードに入れることにしました。 大変分かりやすいご回答で全て無事に解決しました。有難うございました。

その他の回答 (2)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

>自動でコピーという動作を何ヶ所かしたい この「何ヶ所かしたい」という具体的な提示がないと 的確な回答はできませんが、ま、参考ということで。 (処理内容) Sheet1のA1~~データの最終行までの、値と文字色を Sheet2のF1~~ にコピーする '--------------------------------------------- Sub Test()  Dim R As Long  Dim LastRow As Long  Sheets("Sheet1").Select  LastRow = Cells(Rows.Count, "A").End(xlUp).Row  For R = 1 To LastRow   Sheets("Sheet2").Cells(R, "F").Value = Cells(R, "A").Value   Sheets("Sheet2").Cells(R, "F").Font.ColorIndex = Cells(R, "A").Font.ColorIndex  Next R End Sub '-------------------------------------------- データの最終行が何行目であっても対応できるように LastRow = Cells(Rows.Count, "A").End(xlUp).Row このようなコードで最終行を自動取得します。 以上ここまで。  

r1220
質問者

補足

myRange様 ご回答ありがとうございます。 説明不足で申し訳ないです。 何ヶ所かについてですが、全てsheet1からsheet2へのコピーで、A列をF列へ、B列をG列へ、C列をH列へという感じです。 早速試してみました。 入力文字は完璧にコピーされ、感動致しました。しかし、色のコピーが上手くいきません。 お時間ある時でも考えられる原因をご教授頂けますでしょうか。 宜しくお願い致します。

  • WDY
  • ベストアンサー率27% (121/436)
回答No.1

文字と色をコピーしたいけど、書式はコピーしたくないとの質問でしたが色は書式に含まれてしまっているので 値のコピーをした後に色のコピーをしてはどうでしょう? コードはこんな感じかな 例 dim row as doubule dim color as integer Sheets("Sheet1").Range("A1:AA5000").Select Selection.Copy Sheets("Sheet2").Range("F1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False   Sheets("Sheet1").Range("A1").Select for row=1 to 5000 If Range("A" & row).Interior.ColorIndex > 0 Then color=Range("A" & row).Interior.ColorIndex Sheets("Sheet2").Range("F" & row).Select With Selection.Interior .ColorIndex = color .Pattern = xlSolid End With Sheets("Sheet1").Range("A" & row).Select endif next 即席で作ったのでテストしてませんが流れはわかると思います。

r1220
質問者

お礼

WDY様 おかげさまで今回の件は無事に解決することが出来ました。これからもっと勉強していきます。 大変有難うございました。

r1220
質問者

補足

早速のご回答ありがとうございます。 WDY様からのコードを試してみましたが、下記コードの所でつまずいてしまいました。入力の仕方が悪かったのでしょうか。初心者なもので、せっかく教えて頂いたのにご大変申し訳ないです。 paste:=xlValues, operation:=xlNone, など「:=」や「,」が付く辺りがうまくいきません。何が原因かお分かりでしょうか…

関連するQ&A

  • Excelマクロについて(セルのコピー)

    今、マクロで自動的にセルのデータを別シートに貼り付けるというものを作っています。 Private Sub コピー定義() Worksheets("sheet1").Activate 'sheet1をアクティブにする コピー元行 = 2 コピー先行 = 1 コピー元セル = "A" & コピー元行 コピー先セル = "A" & コピー先行 Worksheets("sheet1").Range(コピー元セル).Copy _ Destination:=Worksheets("sheet2").Range(コピー先セル) End Sub これで、sheet1のA2からsheet2のA1にコピーできるのですが、 Private Sub コピー定義() Worksheets("sheet1").Activate 'sheet1をアクティブにする コピー元行 = 2 コピー先行 = 1 コピー元行 = 2 コピー先行 = 1 コピー元セル = "A" & コピー元行 コピー先セル = "A" & コピー先行 コピー元セル = "B" & コピー元行 コピー先セル = "B" & コピー先行 Worksheets("sheet1").Range(コピー元セル).Copy _ Destination:=Worksheets("sheet2").Range(コピー先セル) End Sub とすると、B2の項目しかコピーされません。複数のセルを一度にコピーするマクロの作り方をご存じの方、ご伝授下さい。

  • excelのセルの色を変える

    excel2000でsheet1にある列のうち たとえば sheet1のセルA1の値が「Z-1」だったら sheet2のセルB1を赤に塗りつぶす ってことはマクロでできますか? できなければVBAでどのようなコードになるのか教えていただけませんでしょうか?

  • excelで、セルの色を他のシートのセルと同じにする。

    EXCELで、Sheet2のセルA1の色を、関数か条件付書式を用いて自動的にSheet1のセルA1と同じにできますか? マクロは使いません。 Winxp & excel2003 です。宜しくお願いします。

  • マクロ セルの色を含むシート間のコピー貼り付け

    このようなことが、できるでしようか。お教え下さいませんか。 シート1のB2~P列の最終行を取得してコピー、シート2のA2のO列の間に貼り付けたい。 但し、シート1は関数処理していて、シート2には値だけを貼り付けたい時のマクロはどのようなコードにすればよいでしょうか。 また、罫線はそののままコピーして貼り付けたい。 更に、シート1のB2からB列の最終行までは、黄色のセルになっているので、それもシート2のA2~A列の最終行まで貼り付けることってできますか。 お教え頂けますでしょうか。よろしくお願いします。

  • 複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ

    ブック(1)のシート(1)にある複数の離れたセル(A1,B2,C3,D4:F4)をコピーし、別ブックのシート(1)のセル(E1,F2,G3,B4:F4)へリンク貼り付けを実行するためのマクロを教えてください。 なお、ブック(1)とブック(2)は同一階層に置いてあります。 このブック(1)とブック(2)の表のフォーマットが違っており、ブック(1)のセルA1をコピーして ブック(2)のセルE1へ貼り付けし、 また同様にブック(1)のセルB2をコピーして ブック(2)のセルF2へ貼り付けをしていきます。 (A1→E1、B2→F2、C3→G3、D4:F4→B4:F4 へ貼り付ける) この作業をマクロを使って自動実行させたいと思っています。 御手数お掛け致しますが、何卒よろしくお願いいたします。

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • Excelシートの自動コピーでマクロを使いたい

    表題通り、Excelシートの自動コピーをマクロを使って行いたいのですが、 マクロやVBAの知識が全くないため、どなたかコードを教えていただけないでしょうか。 まず今現在、B1セルに9月1日と日付を入れ、シート名を1日としたものがあります。 これを自動で複製して、B1セルの日付を9月2日 9月3日… シート名を2日 3日…となるように、日毎ごとの一ヶ月分のシートを作り ひとつのbookにしたいと考えております。 また、その際に、B1セルとシート名の日付が日曜・祭日に当たる場合、 シート名に色を付けたいと思っています。 (因みにB1セルの日付はシリアル値で入れていて、 書式で○月○日となるように表示していて、日付が日曜・祭日に当たる場合は 赤文字になるよう、別シートに祝日リストも作って 条件付き書式で設定してあります。) Excelの関数は使えても、マクロは全く分からないので どうかよろしくお願い致します。

  • Excel 同ブックの他シートを参照するセルを、他ブックのセルにコピー

    こんにちは。Excelの使い方について質問させていただきます。 よろしくお願いします。 Excel2003を使っています。 シート数、シート名がまったく同じブックが2つあります。 AブックのAシートのA1セルを参照しているセルである AブックのBシートのA1セルをコピーします。 BブックのBシートのA1セルにペーストします。 BブックのAシートのA1セルを参照して欲しいのですが、 別ブックであるAブックのAシートのA1セルを参照するように 自動的に変換されてしまいます。 シンプルにそのままコピーすることは不可能でしょうか。 セルのコピーでは無く、中の文字列を選択してコピーしても、 何が起こっているのかよくわかりませんが上手くいきません。 Excel初心者です。マクロはまったく使えません。 親切な方、どうぞよろしくお願いします。

  • Excel VBA 他のシートからセル範囲をコピー

    宜しくお願いします。 Excel2003でVBAを利用しています。 他のブック内にある(sheet1)のセル範囲(B9:D64)の値を 現在開いているブック内の(sheet8)の指定した位置に貼り付けたいと 思っています。 コピーしたセルはB,C,Dと3列あるのですが、 B列を(sheet8)のB列に、C列を(sheet8)のF列に、 D列を(sheet8)のJ列のそれぞれ12行目を頭にして 貼り付ける、という作業をしたいのです。 上記のようなコピー作業が、列や行がばらばらで50箇所くらい あります。 マクロ記録で、2,3箇所試しにやってみたのですが、 1列づつ、クリップボードを経由して行わなければならず、 冗長なコードになってしまい、もっと良い方法があるのでは ないかと思い、書込みしました。 現在のコードです。 workbook(1).Activate 'コピー元のセルを選択してクリップボードへ Worksheets(sheet1).Range("B9:B64").Copy '1枚目 日付列 '現在のブックを選択して貼り付け ThisWorkbook.Activate Range("B12").Select '1枚目 日付列 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '形式を選択して値を貼り付け 上記のように、1列づつコピーしては貼り付けている状態です。 もっとスマートな方法がありましたら教えてください。 宜しくお願いします。

  • EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

    VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか? どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。 シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?