結合セルを含む範囲の書式を複写する方法
- マクロを使用して、セル範囲B30~BM59をBR29の最下端に複写する方法を説明します。
- 結合されたセル範囲B30~BM59の結合を解除し、書式をセル範囲BR61~EE90に貼り付ける方法を説明します。
- 青色のセル結合行と白色のセル結合行の書式を貼り付ける方法についても説明します。
- ベストアンサー
結合セルのある範囲を、未結合の範囲に書式を張付ける
Excel2007でマクロ作成中の初心者です。 1)1枚のシートの中の、セル範囲B30~BM59を、BR29の最下端に複写します。 ※この範囲は毎月、変動します。(28,30,31の3種類だけですが・・) 以下のコードで、セル範囲BR61~EE90に、正常に貼付けが出来ました。 Sub 範囲を右下に値を複写() Range("B30").Resize(Day(DateSerial(Year(Date), Month(Date), 0)), 66).Select Selection.Copy Range("BR29").End(xlDown).Select ActiveCell.Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End Sub 2)問題点は、セル範囲B30~BM59が、セルの結合をしている部分があり "BR29"以下の、貼付部分のセル結合を解除する必要があり、手動で行いました。 3)"BR30"行は青色、BR31行は白色で、セル結合している2行を、先ほど貼付けしたセル範囲BR61~EE90の部分に、この書式を 貼付けしなければなりません。 4)そこで、2行の書式を、先ほど値を貼付けた部分と同じ範囲に貼りつけるにはどうしたらよろしいでしょうか。
- aitaine
- お礼率43% (170/393)
- Visual Basic
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 1)1枚のシートの中の、セル範囲B30~BM59を、BR29の最下端に複写します。 > ※この範囲は毎月、変動します。(28,30,31の3種類だけですが・・) > 以下のコードで、セル範囲BR61~EE90に、正常に貼付けが出来ました。 ということでしたから、コードを作成する実力は既にお持ちですので、単に書式の貼り付けのコードが分からないという事だと思いますから、私が説明したのは、書式の貼り付けのコードをマクロの記録で取得して、それを元にご自身のコードに応用してくださいということです。 > 1)の値貼りつけ元の範囲を、再利用ししかもデータ入力下端でなく、これも値貼り付け先の位置を再利用して、同じ場所に書式を貼りつけたいのです。 再利用ということですから、貼り付け元は値貼り付けの同じコードでよろしいでしょうし、貼り付け先はマクロの記録で取得した書式貼り付けのコードの位置の部分だけ、先に値貼り付けした位置に変更してやるだけでいいのではないでしょうか。
その他の回答 (1)
- kmetu
- ベストアンサー率41% (562/1346)
> 4)そこで、2行の書式を、先ほど値を貼付けた部分と同じ範囲に貼りつけるにはどうしたらよろしいでしょうか。 マクロの記録で「書式を取り込みたい範囲を選択してコピー、形式を選択して貼り付け→書式」を記録して応用してください。 また、セル結合の解除、再結合などもマクロの記録で記録すると手動で行わなくて良くなります。 Excel(エクセル) VBA入門:マクロの自動記録と実行(Excel2007編) http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_01_2007.html
補足
ご回答ありがとうございます。私の表現不足により。ご迷惑かけますした。マクロ記録のことは、承知しております。教えていただきたいことは、1)の値貼りつけ元の範囲を、再利用ししかもデータ入力下端でなく、これも値貼り付け先の位置を再利用して、同じ場所に書式を貼りつけたいのです。よろしくお願いします。
関連するQ&A
- ある範囲の書式を飛び飛びに貼り付けたい
Excel2007でマクロ作成してる初心者です。 ある範囲の書式を移動しながら、書式を貼り付けていく マクロの書き方がわかりません。どなたかご教示おねがいします。 Sub 書式の貼り付け() '"F14:AG28"の範囲に書式を設定 Range("F14:AG28").Select Selection.NumberFormatLocal = "h:mm;@" '"その範囲を24行だけ移動し、全く同じ書式を貼り付ける Selection.Copy Range("F38").Select ’24行目のセル Selection.PasteSpecial Paste:=xlPasteFormats '"その範囲をまた24行だけ移動し、全く同じ書式を貼り付ける Range("F62").Select ’48行目のセル Selection.PasteSpecial Paste:=xlPasteFormats これをシートの数だけ繰り返す。 ’・・・ ’・・・ Application.CutCopyMode = False Range("A3").Select End Sub
- 締切済み
- Visual Basic
- 複数シートをループさせてマクロを簡素化したい
win7 Excel2007 でマクロ作成中の初心者です。 シート数の変動する複数シートの特定範囲を一枚のシートに右列方向に、値を貼り付けたいです。 自動記録でコード作成しましたが、もっと簡素化して軽くしたいです。 シートに対するループ等の作成ができません。どうかご指導お願いします。 Sub 勤怠最終データ作成() Worksheets(1).Select '1番左のシートを選択 ActiveSheet.Unprotect Range("B29:BM60").Select '複写範囲はすべて同じ Selection.Copy Sheets("総括").Select '値の貼り付けシートはすべて同じ Range("A2").Select '値の貼り付け先 Selection.PasteSpecial Paste:=xlPasteValues ’-------------------------------------- Worksheets(2).Select '2枚目のシートを複写 ActiveSheet.Unprotect Range("B29:BM60").Select Selection.Copy Sheets("総括").Select 最終セルの選択 '値の貼り付け先 Selection.PasteSpecial Paste:=xlPasteValues ’-------------------------------------- Worksheets(3).Select '3枚目のシートを複写 ActiveSheet.Unprotect Range("B29:BM60").Select Selection.Copy Sheets("総括").Select 最終セルの選択 Selection.PasteSpecial Paste:=xlPasteValues ’-------------------------------------- Worksheets(4).Select '4枚目のシートを複写 ActiveSheet.Unprotect Range("B29:BM60").Select Selection.Copy Sheets("総括").Select 最終セルの選択 Selection.PasteSpecial Paste:=xlPasteValues 以下省略 End Sub
- ベストアンサー
- Visual Basic
- excel単一セルから結合セルに複写
単一セルのものを結合セルに複写したいのですが、うまくいきません。 データーが約700行あるのです。 Aシートが単一セルでBシートが結合セル(縦に結合)になっていますが、 そのままコピーすると、当然結合が解除され、貼り付けられてしまいます。 「形式を選択して貼り付け・・」で、数式又は値等で貼り付けると、一行飛ばしで 貼り付けされてしまいます。 うまく貼り付ける方法がありましたら、教えていただきたいのですが・・・
- ベストアンサー
- その他MS Office製品
- エクセルで結合セルを参照する場合の書式設定
エクセル2010です。 A列が3行毎の結合セルになっていて、その結合セルには日付けが入っているのですが、結合セルの日付けがtodey()より小さい(過去)の場合、B列、C列、D列・・・を行方向に書式設定したいのですがうまく行きません。 範囲全体を指定して、A1<today()でダメだったので、B1:F1と範囲指定してA1<today()、B2:F2と範囲指定してA1<today()、B3:F3も同じようにA1<today()とA1セルの横の3行をバラバラで書式設定して、書式コピーして範囲全体に貼り付けても部分的におかしな色になってしまいます。 何か方法があるのでしょうか?
- ベストアンサー
- Excel(エクセル)
- 結合されているセル行の中から1行だけを非表示にするマクロ
結合されているセル行の中の1行だけを非表示したいと思っています。 例えばA1:A5が結合していて、B1:E5までは一切結合されていない状態で、3行目だけを非表示にしたいのですが、 Rows("3:3").Select Selection.EntireRow.Hidden = True とすると、1~5行目まで全てが非表示になります。 マクロを自動記録すると Rows("3:3").Select Range("B3").Activate Selection.EntireRow.Hidden = True となるのですが、この通りにコーディングしても、やはり1~5行目が非表示になります。 1行だけを非表示にしたい場合は、どのように記述すれば良いのでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCEL97で、結合セルをコピー、値貼付けはできないのでしょうか
EXCEL97を使用しています。 結合セルと結合していないセルが共に含まれた範囲を指定してコピーし、別のセルに『形式を選択して貼付け』の『貼付 値』を行った場合に「この範囲には同じ操作のセル結合が必要です」とのメッセージが出て、貼付けできません。 ※ 上記の選択範囲の例 A1とB1をセル結合した上、A1:B4を範囲指定(A2:B4は通常セル) 書式設定のボタンの『←a→』という形のものを使っているのですが、95の時はセル結合機能までが付与されてなかったので、問題なかったのですが、97になって困っています。 以下のようなアイデアはありますが、それ以外に良いものはあるでしょうか。 1.セル結合した部分とセル結合していない部分を2回に分けて行う 2.上記ボタンを使用せずに、セルの書式の横位置を『選択範囲内で中央』を選択
- ベストアンサー
- オフィス系ソフト
- VBA、セルの選択範囲について
下記のような表を用意し、 A B C D E 1 1月 2月 3月 合計 2 Aさん 1 2 3 6 3 Bさん 1 2 3 6 4 Cさん 1 2 3 6 5 合 計 3 6 9 18 セルの範囲選択を指定し別シートの任意のセルへコピーをVBAで行いたいのですが、 Aさん、Bさん、Cさんという範囲を選択する為に、合計という文字は含みたくないので、 Range("A2").Select Range(Selection, Selection.End(xlDown).Offset(-1)).Select と記載し、これは出来ました。 同様に、 1月、2月、3月という範囲も同様にxlToRightを使用し選択出来ました。 Range("B1").Select Range(Selection.End(xlToRight).Offset(, -1), Selection).Select しかし、B2:D4の範囲の指定の仕方がわかりませんでした。 データのレコード数は一定ではないのでB2:D4というように範囲を指定する事は出来ません。 そのときに応じてDさん、Eさんと増えたり、4月、5月と増えたりするので。 何か方法があればご指導お願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル2003 セルの結合について
エクセル2003で、セルを結合して中央揃え(またはセルの結合)をした行を選択し、行の挿入をした場合の疑問なのですが… 例えば、B2:D2、B3:D3、B4:D4をそれぞれセルを結合して中央揃えをしたとします。 次に、3行目を選択して行を挿入した場合、「セルを結合して中央揃え」が反映されません。 (※挿入オプションで、上と同じ書式を適用または、下と同じ書式を適用をしても反映されません。) ちなみに、上記のセルに、セルの結合をし、塗りつぶしをしてから3行目を選択して行を挿入すると、「塗りつぶし」の書式は反映されます。 なぜ、この場合、セルを結合して中央揃え(またはセルの結合)の書式は反映されないのでしょうか? ご存知の方、ご教示いただけないでしょうか? よろしくお願い申し上げます。
- ベストアンサー
- オフィス系ソフト
- マクロ 結合セルへ値のみ貼り付けるにはどうしたらよいでしょうか。
マクロは初心者で、まだまだ勉強しているところです。 シート名「入出金履歴」のデータを顧客コードごとに分かれている別シートへデータを振り分けて貼り付ける、もしくは反映させたいのですが、貼り付け先のセルがシートの都合上、結合セルになっており、下記のマクロだと当然ながらエラーになってしまいます。結合セルをまず、解除してから貼り付けようと思ったのですが、うまくいかず、困っています。 コピー先の結合状態は、7行目から、列A:C、列D:E、列F:H と、3列になるように結合されています。結合されている行の終わりは、A:C(結合されている)列に「合計」の値が入っているセルの行、H列まで、3列になるよう結合されています。 解除する以外に、良い方法があれば是非教えていただきたいです。 よろしくお願いします。 Sub samplea() r1 = ActiveCell.Row r2 = r1 + Selection.Rows.Count - 1 Dim myRange As Range Dim s_no As String For i = r1 To r2 s_no = Cells(i, 2) Range(Cells(i, 4), Cells(i, 9)).Select Selection.Copy Sheets(Format(s_no)).Select Set myRange = Columns("a:c").Find(what:="合計") If myRange Is Nothing Then Debug.Print "Not Fount" Else myRange.Select Selection.End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlValues Application.CutCopyMode = False Sheets("入出金履歴").Select End If Next End Sub
- ベストアンサー
- Visual Basic
- エクセルのマクロ 選択したセルを指定した範囲へ値貼
お世話になります。 自動記録したものをどのように修正したら、実行時に選択しているセルの値を、3行下、1つ左のセルから8行目までに貼り付けることができるよう書き変えられますでしょうか。 初心者で何に手を付けて良いのか分からず。どなたかご教示いただけませんでしょうか。どうぞよろしくお願い致します。 Sub 選択したセルを指定した範囲へ値貼り付け() ' ' Macro1 Macro ' ' Range("I9").Select Selection.Copy Range("H12:H19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
- ベストアンサー
- Excel(エクセル)
お礼
ありがとうございます。今一度教えていただいた方法をもとに自分で工夫して、やってみたいとおもいます。ありがとうございました。