• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA セルの値、書式を貼り付けしたい)

エクセルVBAでセルの値と書式を貼り付けする方法

このQ&Aのポイント
  • エクセルVBAを使用して、指定の条件に基づいてセルの値と書式を貼り付ける方法について教えてください。
  • 具体的には、Worksheets("KAIGAIFUNIN") に名前がある人をWorksheets("ALL") で検索し、該当する名前の横のセルに赴任地と滞在年数をコピーして貼り付けたいです。
  • また、セルの書式(書体、文字サイズ、文字の色、セルの塗りつぶし)もそのまま反映させたいですが、R1C1形式に変換する方法を教えてください。

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

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは R1C1形式、A1形式は関係無いのでは? Sub 海外赴任者チェック()   Dim A   As Worksheet   Dim B   As Worksheet   Dim tateA As Long   Dim tateB As Long      Set A = Workbooks("名簿.xls").Worksheets("ALL")   Set B = Workbooks("名簿.xls").Worksheets("KAIGAIFUNIN")      For tateA = 2 To 400     tateB = 2     Do Until B.Cells(tateB, 1) = ""       If B.Cells(tateB, 1) = A.Cells(tateA, 1) Then         B.Cells(tateB, 2).Copy A.Cells(tateA, 5) '赴任先の入力         B.Cells(tateB, 3).Copy A.Cells(tateA, 6) '赴任年数の入力         Exit Do       End If       tateB = tateB + 1     Loop   Next End Sub

kasetsu
質問者

お礼

返事が遅くなりまして、すみません。 悩んでいた事が簡単に解決できました!! どうもありがとうございました。m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • SI299792
  • ベストアンサー率48% (723/1496)
回答No.2

IFの中を B.Cells(tateB, 2).Resize(1, 2).Copy A.Cells(tateA, 5) にすれば、コピーは1回で済みます。

kasetsu
質問者

お礼

返事が遅くなりまして、すみません。 お忙しいところご回答いただき、ありがとうございました。m(_ _)m Resizeは知らなかったので参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAで B.xlsの番号と同じ番号がD.xlsにあればくっつけたい

    VBAで B.xlsの番号と同じ番号がD.xlsにあればくっつけたい  エクセル関数でいうとVlookUPをしたいのですが、1004エラーがかかってしまいます。 必要なところだけを抜き取っているので、分かりにくいかと思いますが、   Dim a, b, c, d, y, x, z, i, j, k, m, n, o, r As Long a = 2 '2 なのは、A2から数えるため。 b = 0 'BookBのレコードの数を数えるための変数。 Do While Workbooks("B.xls").Worksheets("Sheet1").Cells(a, 1) <> "" a = a + 1 b = b + 1 Loop Workbooks("B.xls").Activate For k = 2 To b For m = 2 To 300000 エラー⇒ If Workbooks("B.xls").Worksheets("Sheet1").Cells(k, 1) = Workbooks("D.xls").Worksheets("Sheet1").Cells(m, 1) Then Workbooks("B.xls").Worksheets("Sheet1").Cells(k, 12) = Workbooks("D.xls").Worksheets("Sheet1").Cells(m, 2) Workbooks("B.xls").Worksheets("Sheet1").Cells(k, 13) = Workbooks("D.xls").Worksheets("Sheet1").Cells(m, 3) End If Next m Next k   ・   ・   ・ の部分でつまっています><; 説明が不十分でしたら追加いたしますので、初心者の簡単なエラーだとは思うのですが、教えてください<(__)>

  • エクセルVBAで他のbookのセルcellsで参照

    エクセルVBAで他のbookのセルの値(一定の範囲)を参照したいのですが、変数を使いたいため、cellsを使用したいのですがうまくいきません。方法はないでしょうか。 下記に例を示します。 rangeを使用すればすべてok((2)(5))(この場合はset文を使用しなくてもok(5))。同じbookならcells使用ok(4)。 他のbookをcells文使用する方法はないでしょうか(もちろんできれば、Thisbookの方もcellsを使用したい)。 よろしくお願いします。 sub test() Dim ThisBook As Workbook Dim Workbook2 As Workbook 'マクロを実行しているワークブック Set ThisBook = ThisWorkbook '他のワークブック Set Workbook2 = Workbooks("test11.xlsx") ' 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value  '(1)だめ 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range("a1:b2").Value '(2) OK 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test11.xlsx").Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(3) だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test1.xlsm").Worksheets(1).Range(Cells(3, 3), Cells(4, 4)).Value  '(4)だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:ii8000").Value = Workbooks("test11.xlsx").Worksheets(1).Range("a1:ii8000").Value  '(5) ok End Sub

  • セルの値で別BookのSheetを開く

    EXCELのVBAで、特定のBook(元データ.xls)のA1セルに入力された文字列と同じ名前の別Book(format.xls)のSheet(元データ)を開くようにしたいのですがうまくいきません。 VBAはほぼ素人で、いろいろなページを参考につぎはぎで作りました。 どうか、宜しくお願いします。。。 Dim a As String a = Workbooks(\"元データ.xls\").Worksheets(\"Sheet1\").Cells(1, 1).Value ActiveCell.FormulaR1C1 = \"=LEFT(bookname(),FIND(\"\".\"\",bookname())-1)\" Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False   >> 元データ.xlsのA1にはファイル名を取得(除く.xls)して、値貼り付けするようにしています。          Workbooks(\"format.xls\").Activate Worksheets(a).Select     ↑ココがうまく行かないようです。 が、一度失敗して2回目は上手く動きます。なぜなのかわかりません。

  • Excel VBAで他のワークブックからのコピぺの仕方について

    Excel VBAで開いている全てのワークブックから決められたセルの中身とそのシート名をそれぞれ決められた一つのワークブックにコピぺする マクロを作りたいのですが、どうやって作って良いのかが分かりません。 例えば、 Sub Mac() For i = 1 To 100 Workbooks("Book1.xls").Worksheets("sheet1").Range(Cells(2108, 2), Cells(3108, 2)).Cut Destination:=Workbooks("Book1.xls").Worksheets("sheet1").Cells(13, 2) End Sub みたいにすれば良いと思うのですが、開いている全てのファイルからのコピぺってどうやって記述するのでしょうか? 何卒よろしくお願い致します。

  • 異なるブック間でのセル範囲のコピー/VBA

    異なるブック間でクリップボードを経由せず直接コピーしたいため 下記のマクロを記述していますが、実行エラーが発生します。 どうしてでしょうか。 ThisWorkbook.Worksheets(3).Range(Cells(3, 1), Cells(3 + a, 1)).Value = Workbooks("excel.xls").Worksheets(1).Range(Cells(11, 3), Cells(11 + a, 3)).Value (補足) (1)VBA実行中のThisWorkbook、excel.xlsは別のブック ですが、同じフォルダにあります。 (2)aは数値が入る変数です。

  • VBA初心者です。値を貼り付け について質問です。

    VBA初心者です。 値を貼り付け について教えてください。 Sub test() With Workbooks("A.xls").Worksheets("sheet1") .Range("A1").Copy Workbooks("Bxls").Worksheets("sheet1").Range("B2") .Range("A2").Copy Workbooks("B.xls").Worksheets("sheet1").Range("B4") End With End Sub コピーする方に計算式が入っているので 値を貼り付け したいのですが、どうすればいいのでしょうか? PasteSpecial Paste:=xlPasteValues を使ったらよいというところまではわかったのですが・・・。 教えてください!よろしくお願いします!

  • Excel VBAでのセルの範囲指定

    Excel2000 Win2000です。 あるbook「A.xls」にある表「a」を「B.xls」にコピペ&行列反転するマクロを作っています。 A.xlsの表「a」のサイズが作成の都度変わるため、 B.xlsからサイズの取得をする為、 Workbooks.Open Filename:="A.XLS" I1 = 1 ' 行数の取得 DO WHILE CELLS(I1,1).VALUE <> ""  I1 = I1 + 1 LOOP I2 = 1 '列数の取得 DO WHILE CELLS(1,I2).VALUE <> ""  I2 = I2 + 1 LOOP として、行と列の数を取得しています。 で、ここまで来てセルの範囲をどうやって指定していいのか分からなくなりました。 例えば、I2の値をExcelの列のアルファベット表記に変える等、 なにかいい方法はありませんか??

  • excelのファイルとセル値を書き出したい

    excel2003を利用しています。 とあるフォルダにある excelファイル名(自分自身のファイルを除く) を全て書き出して、 且つ A1セルの値をB列に書き出すことを、やろうとvbaを作ってみましたが。 最後のファイルのA1セルを書きだすところで、エラーになっていまい そこだけ空白になってしまいます。※写真参照 記述は以下の通りです。どのように修正すればよいか 教えていただけないでしょうか? また他にもっと優れた記述があれば、そちらも教えて欲しいです。 よろしくお願いします。 Sub test() Dim buf As String, cnt As Long Dim Path As String Path = ThisWorkbook.Path & "\" buf = Dir(Path & "*.xls") cnt = 2 Do While buf <> "" If buf <> ThisWorkbook.Name Then cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Workbooks.Open Filename:=Path & "\" & buf MsgBox Workbooks(buf).Worksheets(1).Range("A1").Value Cells(cnt, 2) = Workbooks(buf).Worksheets(1).Range("A1").Value Workbooks(buf).Close End If Loop End Sub

  • VBA セルの削除

    開いているブック全てに対して、セルを削除するマクロを組んだのですが、うまく動作しません。 1. ブックのsheet1にてセルB2~B100の中で、値があるセルを特定 値の入ったセルがあれば、その値と同じ名前のシートが存在する 例) B2:値 1-A、シート名: 1-A B3:値 2-A、シート名: 2-A ... 2. 特定した値と同じ名前のシートをアクティブにする 3. そのシートにて「セルA1がブランクでない かつ セルB1の値がゼロ」と条件をかける 4. trueであれば、sheet1にて特定したセルへ戻る 5. 特定したセルとその右隣のセルを削除(上シフト) 6. 1.~5.を、sheet1のセルB2以降、値がブランクになるまで繰り返す 次の通り構文を作成、エラーなく実行できるのですが、結果は5.までしか処理されず、他のブックに対しても処理が走っていません。 格納した変数に問題がありそうなのですが、解決できず困っています。 Sub test() Dim WBK As Workbook For Each WBK In Workbooks If WBK.Name <> ThisWorkbook.Name Then WBK.Activate For i = 2 To 100 touroku = WBK.Worksheets("sheet1").Cells(i, 2).Value If WBK.Worksheets("sheet1").Cells(i, 2).Value <> "" Then WBK.Worksheets(touroku).Activate If ActiveSheet.Cells(1, 1) <> "" And ActiveSheet.Cells(2, 1).Value = 0 Then WBK.Worksheets("sheet1").Cells(i, 2).Resize(1, 2).Delete End If End If Next i WBK.Save End If Next WBK End Sub まだVBA初めて1ヶ月ほどで、基礎が理解できてきた程度なのですが、急ぎ完成させたいマクロなのでお力を貸してください。 よろしくお願いいたします。

  • Excel VBAで異なるファイル間のコピー

    異なるファイル間で値のみをコピーしたいです。下記の様な感じです。 hoge1.xlsのA1からA10のセルの値のみをhoge2.xlsのB1からB10へコピーする。 以下の様に書いてみたのですが、数式がコピーされてしまいます。 VBAをやったことがなく、今ネットで30分ほど見て書いてみたので 根本的に理解していません。簡単な書き方を教えていただきたいです。 Sub test() Dim Fname As String Fname = "hoge1.xls" Workbooks.Open Filename:=Fname, ReadOnly:=True Dim range1 As Range Set range1 = Worksheets("Sheet1").Range("A1:A10") range1.Copy Destination:=Workbooks("hoge2.xls").Worksheets("Sheet1").Range("B1:B10") End Sub また、ファイルを開いたり閉じたりは必要なのでしょうか? Workbooks.Open Filename:=Fname, ReadOnly:=True を書かずに、いきなり Set range1 = Workbooks("hoge1.xls").Worksheets("Sheet1").Range("A1:A10") はダメなのでしょうか?? よろしくお願いします。

専門家に質問してみよう