あるセルから別のセルに書式を一気に転記したいのですが、現状ではfontstyle、interiorcolorindex、columnwidth、rowheightなどをひとつひとつ転記しています。
これらをまとめて、ひとつのプロパティとして取得し、そのまま別のセルに設定できないのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

どもども田吾作7です。



見てるかなー・・・見てねーだろうなー。
今7/9だもん。見てないよなー・・・

でも書いときます。

書式のコピーロジック

Dim NowSelectObj As Object '現在選択されているものを記憶する

Dim wkRangeA As Range 'コピー元
Dim wkRangeB As Range '貼り付け先

'現在選択されているものを記憶する
On Error Resume Next
Set NowSelectObj = Selection
On Error GoTo 0


'書式のコピー元を設定
Set wkRangeA = Range("A1") 'Cells(1, 1)でもいい
'書式の貼り付け先を設定
Set wkRangeB = Range("B1") 'Cells(1, 2)でもいい
'もし貼り付け先が複数存在する時は、RangeとUnionをヘルプで調べてください。

'コピーする
wkRangeA.Copy

'書式だけ貼り付ける(カーソルがwkRangeBに移動する)
wkRangeB.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'コピーモードを解除する
Application.CutCopyMode = False

'カーソルが移動してしまうので、もとの位置に戻す
If Not (NowSelectObj Is Nothing) Then
NowSelectObj.Select
End If

'それぞれ開放
Set wkRangeA = Nothing
Set wkRangeB = Nothing
Set NowSelectObj = Nothing


ってな感じでしょうか?
これはエクセルの書式のコピーをそのまま行っていますので、セルの移動が行われています。一応 NowSelectObjにて、カーソルを元の位置に戻していますが、画面のちらつきが発生する恐れがあります。そのときには
プログラムの開始時にScreen.Updating = False
プログラムの終了時にScreen.Updating = True
を記述し、画面の更新を制御してやってください。

っていうか 見てるかなー・・・・

でわでわ
    • good
    • 0

独自のStylesコレクションを定義したらどうでしょうか。

    • good
    • 0

マクロの記録を開始して形式を指定して貼り付けから書式を選べば使えるコードが生成されますよ。

(知ってると思いますが。)

この回答への補足

もちろん知っていますし、参考になるかと思って既にやっています。
select-copy-paste以外の、直接的なやり方がないのか知りたかったのでこの質問をしました。

2件とも同じ回答(マクロの自動生成)が来るところをみると、もしかしてこれ以外に方法がない???

補足日時:2001/06/19 22:41
    • good
    • 0

"マクロの記録"はご存知ですか?

    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報