Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


66000 / 76734 ←次へ | 前へ→

【15300】Re:セルの結合を解除して、
回答  ちゃっぴ  - 04/6/20(日) 14:37 -

引用なし
パスワード
   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.では動作しない可能性があります。

あと、動作させる前にわからないところを必ずヘルプで調べる
ようにしましょう。

それでも、わからない点がありましたらご質問ください。

0 hits

【15296】セルの結合を解除して、 やまちく 04/6/19(土) 23:31 質問
【15300】Re:セルの結合を解除して、 ちゃっぴ 04/6/20(日) 14:37 回答
【15357】Re:セルの結合を解除して、 やまちく 04/6/22(火) 13:06 お礼
【15362】Re:セルの結合を解除して、 ちゃっぴ 04/6/22(火) 14:47 回答
【15388】Re:セルの結合を解除して、 やまちく 04/6/23(水) 9:54 お礼

66000 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free