Excel VBA質問箱 IV

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

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


6796 / 13644 ツリー ←次へ | 前へ→

【43068】セルの結合について たーくん 06/10/1(日) 12:15 質問[未読]
【43070】Re:セルの結合について かみちゃん 06/10/1(日) 12:22 発言[未読]
【43073】Re:セルの結合について たーくん 06/10/1(日) 14:09 発言[未読]
【43074】Re:セルの結合について かみちゃん 06/10/1(日) 14:15 発言[未読]
【43075】Re:セルの結合について かみちゃん 06/10/1(日) 14:25 回答[未読]
【43076】Re:セルの結合について たーくん 06/10/1(日) 15:29 お礼[未読]

【43068】セルの結合について
質問  たーくん  - 06/10/1(日) 12:15 -

引用なし
パスワード
   初めて投稿させていただきます。
最近VBAをかじりだして、いきなりセルの結合について困っております。
例えば、以下のようなシートで、
  A B C D E
1
2
3
4
5
A1:A3の範囲を選択した状態で、C1:C3、D1:D3、E1:E3をそれぞれ
別々に結合することは可能でしょうか。

どなたか、ご教授願えないでしょうか。

【43070】Re:セルの結合について
発言  かみちゃん  - 06/10/1(日) 12:22 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>A1:A3の範囲を選択した状態で、C1:C3、D1:D3、E1:E3をそれぞれ
>別々に結合することは可能でしょうか。

できます。
「マクロの記録」で記録してみてください。
ただし、VBAで結合セルを扱うのは、なかなか難しいと思いますので、おすすめしません。

【43073】Re:セルの結合について
発言  たーくん  - 06/10/1(日) 14:09 -

引用なし
パスワード
   かみちゃん さん、回答ありがとうございます。

C1:C3、D1:D3・・・・と、個別に結合する操作を記録することは出来ました。
しかし、目的の動作は、A1:A3を選択した状態でマクロを起動すると、自動的に
C1:C3、D1:D3、E1:E3をそれぞれ結合するというものです。
そのほかの例としては、A3:A5を選択した状態でマクロを起動すると、C3:C5、D3:D5、E3:E5をそれぞれ結合したいのです。

説明が分かりにくく、申し訳ないですが、ご教授願えないでしょうか。

【43074】Re:セルの結合について
発言  かみちゃん  - 06/10/1(日) 14:15 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>C1:C3、D1:D3・・・・と、個別に結合する操作を記録することは出来ました。

それであれば、ご自身でどこまでできたのかを提示してみませんか?
あと、やはりどうしても、結合する必要があるのでしょうか?
もう一度、コメントさせていただきます。結合セルをVBAで扱うのは、割と難しいですよ。

【43075】Re:セルの結合について
回答  かみちゃん  - 06/10/1(日) 14:25 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>A1:A3を選択した状態でマクロを起動すると、自動的に
>C1:C3、D1:D3、E1:E3をそれぞれ結合するというものです。
>そのほかの例としては、A3:A5を選択した状態でマクロを起動すると、C3:C5、
>D3:D5、E3:E5をそれぞれ結合したいのです。

ちなみに、以下のような感じでできると思います。
ポイントは、エラー処理を入れていることと、Offsetで1列ずつずらしながら結合を繰り返していることです。

Sub Macro1()
 Dim intOffsetCol As Integer
  
 If Not TypeName(Selection) = "Range" Then
  MsgBox "セルの範囲が選択されていません"
  Exit Sub
 End If
 If Selection.Columns.Count > 1 Then
  MsgBox "複数列が選択されているため処理できません"
  Exit Sub
 End If
 For intOffsetCol = 2 To 4
  With Selection.Offset(, intOffsetCol)
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = True
  End With
 Next
End Sub

【43076】Re:セルの結合について
お礼  たーくん  - 06/10/1(日) 15:29 -

引用なし
パスワード
   かみちゃん、回答ありがとうございます。

サンプル、ありがとうございます。
あれから色々やってみまして、一応、目的の動作を行えるようになりました。
かみちゃんさんのサンプルと見比べると、お恥ずかしい限りですが、一応、載せときます。 ポイントとして挙げて頂いたことが、ことごとく入っていませんでした。。。。 
もっと勉強したいと思います。

今回は、本当にありがとうございました。


Private Sub CommandButton1_Click()
  Dim FirstRowNum As Long
  Dim LastRowNum As Long
  Dim Str As String
  
  With Selection
    With .Cells(1, 1)
      FirstRowNum = .Row
      FirstColumnNum = .Column
    End With
    LastRowNum = FirstRowNum + .Rows.Count - 1
    FirstColumnNum = FirstColumnNum + 1
  End With
  
  Str = "D" & FirstRowNum & ":D" & LastRowNum
  Range(Str).Select
  With Selection
    .MergeCells = True
  End With

  Str = "E" & FirstRowNum & ":E" & LastRowNum
  Range(Str).Select
  With Selection
    .MergeCells = True
  End With

  Str = "F" & FirstRowNum & ":F" & LastRowNum
  Range(Str).Select
  With Selection
    .MergeCells = True
  End With

End Sub

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