• ベストアンサー

EXCEL VBA 文中の書式ごと複写するには

EXCEL VBAのプログラミングについて教えてください。 セルA1とセルB1が結合されており、セルには「あいうえお」と入力されています。 入力された「あいうえお」の内、「いうえ」は赤文字+太字を設定したと仮定します。 その結合されたセルの文章と文字色+太字を、結合されていないA3というセルに複写する場合、 下記の様なコードを考えてみましたが、長文になると処理が遅いので知恵を貸してください。 Range("A3").Value = Range("A1").Text For i = 1 To Len(Range("A1").Text)   Range("A3").Characters(i, 1).Font.Color = Range("A1").Characters(i, 1).Font.Color   Range("A3").Characters(i, 1).Font.Bold = Range("A1").Characters(i, 1).Font.Bold Next i よろしくお願いします。

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

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、 Range("a1").Copy Range("a3").PasteSpecial xlPasteAll で、どうでしょう。

HaruXP
質問者

お礼

参考にさせて頂きました。 ありがとうございました。

その他の回答 (2)

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.3

結合されたセルの値やその属性は一番左上のセルの値として保存されていたと思います。 なので Range("A1").Copy Range("A3") でいいのでは?

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

・B3に値がなければ、一旦コピペしてから結合を解除する。 ・B3に値があれば、一旦変数に取り込んでコピペし、結合を解除してからB3に代入する。 とかかな???

関連するQ&A

  • Excel VBAのCharacters関数

    Range("b43").Characters(5, 10).Font.bold = True と入れたのですが、指定のセルが全く太字になってくれません。いろいろパラメーターをいじってみたのですが、 Range("b43").Characters(1,10).Font.bold = True Range("b43").Font.bold = True の両方で、全部太字になる現象が起きました。基点が1以外ですとまったく動いてくれず、基点が1だと全部太字になってしまうようです。どのようにすれば狙った場所だけ太字にすることができるのでしょうか? セル自体にはvlookup,char(10),concatenate,if,iserrorの関数が使用されています。

  • excel vba

    VBAに不慣れなので教えてください。 今下記のプログラム(A1セルで青色以外の文字を消去する)はA1セルのみを対象にしているのですが、 (1)セルをA1からA3までにする。 (2)処理対象をA1のある列を対象とするようにしたい。 各々どう手直しすればいいか。 プログラムtest Public Sub test() Dim r As Range Dim i, wk As String Set r = Range("A1") wk = "" For i = 1 To Len(r.Value) Debug.Print r.Characters(i, 1).Font.ColorIndex If r.Characters(i, 1).Font.Color = vbBlue Then wk = wk + r.Characters(i, 1).Text End If Next r.Value = wk r.Characters.Font.Color = vbBlue End Sub

  • エクセル2002のVBAで太文字を検索したいのですが、

    エクセル2002のVBAで太文字を検索したいのですが、 <状況> B列にチェックしたい文字が入力されています <やりたいこと> B列に入力されている文字の中から、太文字のみを抜き出して、 太字の見つかった行のG列に太文字のみを抜き出して複写したい <自作マクロの現状> セル全体の太文字検索は下記のマクロ「太字検索チェック1」で完成しましたが、 セルに記載してある文字の中で「一部は普通文字、のこり一部は太文字」と混在 しているセルの中身から太文字部分のみを別のセルに抜き出したいのですが、 そのマクロを「太字検索チェック2」のように書きました。 しかし「太字検索チェック2」の「 If dat.Font.Bold = True Then」の部分で 「型が違う・・・」のエラーで先に進みません。 どなたか、セルの中身の太文字のみを抜き出すマクロを教えてください よろしくお願いします   Sub 太字検索チェック1() i = 3 Worksheets("テスト").Activate For Each myRng In Range("B:B") セル = "b" & i If Range(セル).Font.Bold = True Then Cells(i, 7) = Cells(i, 2) ’太字のCells(i, 2)を Cells(i, 7) にコピー End If i = i + 1 If i = 1703 Then ’1703番地で終了 Exit For End If Next End Sub Sub 太字検索チェック2() i = 3 Worksheets("テスト").Activate For Each myRng In Range("B:B") 内容 = Cells(i, 2) 文字数 = Len(内容) For p = 1 To 文字数 dat = Mid(内容, p, 1)       X=8+P If dat.Font.Bold = True Then  ’1文字づつ太字を検索 Cells(i, X) = dat        ’太字なら→Cells(i, X) にコピー End If Next i = i + 1 If i = 1703 Then Exit For End If Next End Sub

  • VBA For Eachでセル内の文字列を一個ずつ取り出すには

    エクセル2000です。 たとえばA1セル内の文字列を一個ずつ取り出す場合、 Sub test01() For i = 1 To Len(Range("A1").Value) Cells(i, "B").Value = Range("A1").Characters(i, 1).Text Next End Sub このように最初から最後の文字まで何番目で指定することはわかるのですが、これをFor Each で回すにはどうしたらよいでしょうか? (⌒o⌒)? お教えください。 Sub test02() For Each ch In Range("A1").Characters i = i + 1 Cells(i, "B").Value = ch Next End Sub ではエラーになります。

  • エクセルVBAでテキストボックスに文字

    Excel2016です。 ワークシート上に配置した、図形の「テキストボックス」に文字を入れるVBAについての質問です。 下記のTEST01では期待通り文字が入りますが、これはテキストボックスをSelectしなければなりません。 TEST02ならSelectせずにOKかと思ったら実行時エラーとなりました。 どのように修正したらよろしいのでしょうか? Sub TEST01()   Sheets(“Sheet1”).Shapes.Range(Array("TextBox 3")).Select   Selection.ShapeRange.TextFrame2.TextRange.Characters.Text = "TEST/TEST/2020"   Selection.ShapeRange.TextFrame2.TextRange.Font.Name = "Meiryo UI"   Selection.ShapeRange.TextFrame2.TextRange.Font.Bold = msoTrue End Sub Sub TEST02()   With Sheets(“Sheet1”).Shapes.Range(Array("TextBox 3"))     .ShapeRange.TextFrame2.TextRange.Characters.Text = "TEST/TEST/2020"     .ShapeRange.TextFrame2.TextRange.Font.Name = "Meiryo UI"     .ShapeRange.TextFrame2.TextRange.Font.Bold = msoTrue   End With End Sub

  • エクセルの書式について

    エクセルの書式設定についての質問です。 書式設定には太字”B"や斜体"I"等がありますが、関数を使った場合は、上記の書式設定を部分的に使うことが出来なくなります。(よね?) 例えば以下のような場合です。 A1セルに100が入力されている。 B1セルは、="私は"&A1&"歳です。"と入力されている。 B1セルには、私は100歳です。と表示されますが、この"100歳"だけを太字や斜体にしたいときなどです。 他には"10^2"等の指数もよく使うのですが、他のセルを参照した場合には文字飾りの"上付き"が使えなくなります。 何かよい解決策があれば教えて下さい。お願いします。 VBAでもかまいません。

  • Excel2007VBA時間の書式とLen関数

    ●質問の主旨 文字列の長さを返すLen関数の引数に 時間を設定すると戻り値が一定しないのはなぜでしょうか? また下記に示すように20や17などの数字がかえってくるの でしょうか? ●質問の補足 A1セルに入力されている時間が以下の通りだとします。 例1)1:11→20 例2)13:59→17 ●コード Sub test() Dim i as String i=Range("A1") Msgbox Len(i) End Sub 以上よろしくお願いします。

  • エクセルVBAで文字配置と文字制御について

    エクセル97のVBAで、下記の様にセル"A1"と"B1"を結合し、文字配置を 均等割り付けにしたセルの文字配置に"前後にスペースを入れる"を くわえたいのですが?又、文字制御に"折り返して全体を表示する"も 行いたいのですが?教えてください。 Range("A1:A2").Merge Range("A1:A2").HorizontalAlignment = xlHAlignDistributed Range("A1:A2").VerticalAlignment = xlVAlignCenter Cells(1, 1).Value = "テスト123456789" Cells(1, 1).Font.Name = "MS 明朝" Cells(1, 1).Font.Size = 10

  • excel2010条件付き書式後にVBAにて処理

    VBAビギナーのmaruです Excel2010のワークシート上の範囲(Range(”E12:K120“))内の 各セルに条件付き書式(複数あり)にてフォント色を赤く(RGB 255,0,0) 変更したセル内のデータ(数字)のみ削除(””)するVBAを行いたいのですが 以下のコードでは、「セルの書式」で設定したフォント色で削除されてしまい 条件付き書式で変更された赤文字に反映されません ご教授お願い致します Private Sub CommandButton4_Click() 'データ入力セル内の赤文字の削除 Dim rd As Range For Each rd In Range("E12:K120") For i = 1 To rd.FormatConditions.Count If rd.FormatConditions(i).Font.Color = RGB(255, 0, 0) Then rd.Value = "" End If Next Next End Sub 以上、宜しくお願い致します

  • EXCEL VBA 文字色を変える

    よろしくお願いします。 【条件】 セルの文字列を一文字ずつ読み込み、 文字色が赤だったら黒にするというVBAを作成したいです。 例) セルA(1、1)の「あいうえお」 の”い”が青、”う”が赤だった場合、”う”を黒にする。 【状況】 以下のようなVBAを作成しました。 実行するとVBAは正常終了するのですが、VBAで上記変換をかけたEXCELファイルを開くと エラーが発生します。 デバッグモードで一行ずつ実行すると下記※2部分で文字化け?しているようです。 VBA) Do Until i = c  If Range("xx").Characters(i ,c-1).Font.color = RGB(255,0,0) then    Range("xx").Characters(i, c-1).Font.color = RGB(0,0,0)  ・・・※2    i = i +1  End if Loop 【エラー】 『"ファイル名"には読み取れない内容が含まれています。このブックの内容を回復しますか? ブックの発信元が信頼できる場合は「はい」をクリックして下さい。』 『"ファイル名”の修復 読み取れなかった内容を修復または削除することにより、ファイルを開くことが出来ました。 修復されたレコード./xl/worksheets/sheet1.xmlパーツ内のビュー』 上記エラーが表示される+エクセルの内容の大部分が消えます。 【質問】 上記VBAは本物を持ち出せないのでイメージです。 (もしかしたら細かい間違いがあるかもしれませんが実物は構文エラーはありません。) 質問したいのはロジックではなく以下になるのでイメージで汲み取っていただけるとありがたく。。 (1)Fontの書き換えを行った際、上記【エラー】が発生するのはどのような理由があるか  わかりますでしょうか。 (2)エラーの理由の詳細はわからないが「こんなやりかたではどうか」という  【条件】を満たす他のロジックは何かないでしょうか。 他にもオートメーションエラーが発生したり正直お手上げ状態でわらをもすがる思いです。 思いつきでもよいので何かありましたら回答のほどよろしくお願いいたします。