|
VBAで使用する場合、結合セルは問題が起こりやすいので
出来る限りつかわないというのが、上級者の共通認識です。
(処理が煩雑になりますし、Versionによって動作が異なります)
やまちく さんのソースはマクロ記録そのままだと思いますが、
たいていの処理にはSelect,Activateは不要です。
> Range("A1").Select
> Selection.Copy
> Range("A1:A3").Select
> ActiveSheet.Paste
は、以下のようにかけます。
Range("A1").Copy Destination:=Range("A1:A3")
また、繰り返し作業はループを使うことになりますが、
いろいろあるので、勉強してみてください。
ここではFor Each 〜 Nextステートメントを利用した
サンプルを示します。
Sub UnMargedCells()
Dim rngTarget As Range '対象セル
Dim lngRowCount As Long '結合セルの行数
Dim lngColCount As Long '結合セルの列数
'使用セル領域をループ
For Each rngTarget In ActiveSheet.UsedRange
With rngTarget
'結合されていたら
If .MergeCells Then
With .MergeArea
lngRowCount = .Rows.Count '行数
lngColCount = .Columns.Count '列数
.UnMerge '結合解除
End With
'結合されていたセルに値を出力
.Resize(lngRowCount, lngColCount).Value = .Value
End If
End With
Next rngTarget
End Sub
Excel2000では動作確認済みです。
先程も指摘したとおり別のVer.では動作しない可能性があります。
あと、動作させる前にわからないところを必ずヘルプで調べる
ようにしましょう。
それでも、わからない点がありましたらご質問ください。
|
|