Excel VBA質問箱 IV

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

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


3769 / 13646 ツリー ←次へ | 前へ→

【60231】セル結合を解除すると各セルに値が (゜o゜) ON 09/2/5(木) 14:33 質問[未読]
【60233】Re:セル結合を解除すると各セルに値が (゜... Jaka 09/2/5(木) 15:09 発言[未読]
【60234】Re:セル結合を解除すると各セルに値が (゜... ON 09/2/5(木) 15:19 発言[未読]
【60249】Re:セル結合を解除すると各セルに値が (゜... ma 09/2/5(木) 21:45 発言[未読]
【60255】Re:セル結合を解除すると各セルに値が (゜... Abebobo 09/2/6(金) 2:04 発言[未読]
【60261】Re:セル結合を解除すると各セルに値が (゜... Jaka 09/2/6(金) 10:57 発言[未読]
【60266】Re:セル結合を解除すると各セルに値が (゜... ON 09/2/6(金) 11:27 発言[未読]
【60273】Re:セル結合を解除すると各セルに値が (゜... n 09/2/6(金) 17:55 発言[未読]
【60293】Re:セル結合を解除すると各セルに値が (゜... ON 09/2/8(日) 9:49 お礼[未読]
【60294】Re:セル結合を解除すると各セルに値が (゜... n 09/2/8(日) 13:05 発言[未読]
【60300】Re:セル結合を解除すると各セルに値が (゜... ON 09/2/8(日) 21:46 お礼[未読]
【60265】Re:セル結合を解除すると各セルに値が (゜... ON 09/2/6(金) 11:15 発言[未読]
【60256】Re:セル結合を解除すると各セルに値が (゜... ma 09/2/6(金) 9:18 発言[未読]

【60231】セル結合を解除すると各セルに値が (゜...
質問  ON  - 09/2/5(木) 14:33 -

引用なし
パスワード
   こんにちは よろしくお願いいたします

下記のような結合セルがあり

┌───────────┐
│           │
│   ABCD    │
│           │
└───────────┘

これを、セル結合を解除 すると

┌─────┬─────┐
│ABCD │ABCD │
├─────┼─────┤
│ABCD │ABCD │
└─────┴─────┘

のようになりました

このような結合セルはどうすれば出来ますか?

どうも一般機能では無理なような気がしますが
VBAでも無理そうな・・・

試しに
A1:C1を結合し
Sub ABC()

Dim a(1 To 3)
  a(1) = "A"
  a(2) = "B"
  a(3) = "C"
  Range("A1:C1") = a()
End Sub
とかしてみましたが駄目でした

よろしくお願いいたします

【60233】Re:セル結合を解除すると各セルに値が ...
発言  Jaka  - 09/2/5(木) 15:09 -

引用なし
パスワード
   何を利きたいのか良くわかってませんが、
結合セルがB5:C7だとして。

With Range("B5:C7")
  St = .cells(1).value
  結合解除
  .value = St
End With

【60234】Re:セル結合を解除すると各セルに値が ...
発言  ON  - 09/2/5(木) 15:19 -

引用なし
パスワード
   ▼Jaka さん:
こんにちは ありがとうございます

>何を利きたいのか良くわかってませんが、
申し訳ありません
自分でも??で、理解不足でした

レス頂いて、下記、確認してみました
M1:N2が結合されている状態で
イミディエイトウインドウから
?SHEET4.RANGE("M1").Value
ABCD
?SHEET4.RANGE("M2").Value
ABCD
?SHEET4.RANGE("N1").Value
ABCD
?SHEET4.RANGE("N2").Value
ABCD
が返ります
つまり、見かけ上結合されているのに、
各セルに値が存在しています

これは、どのようにすれば実現できるのか知りたいです
EXCEL2003
WINXP
です

【60249】Re:セル結合を解除すると各セルに値が ...
発言  ma  - 09/2/5(木) 21:45 -

引用なし
パスワード
   ▼ON さん:
>▼Jaka さん:
>こんにちは ありがとうございます
>
>>何を利きたいのか良くわかってませんが、
>申し訳ありません
>自分でも??で、理解不足でした
>
>レス頂いて、下記、確認してみました
>M1:N2が結合されている状態で
>イミディエイトウインドウから
>?SHEET4.RANGE("M1").Value
>ABCD
>?SHEET4.RANGE("M2").Value
>ABCD
>?SHEET4.RANGE("N1").Value
>ABCD
>?SHEET4.RANGE("N2").Value
>ABCD
>が返ります
>つまり、見かけ上結合されているのに、
>各セルに値が存在しています
>
>これは、どのようにすれば実現できるのか知りたいです
>EXCEL2003
>WINXP
>です


今晩は!
横から失礼します。

Jakaさんの

>結合セルがB5:C7だとして。
を、M1:N2にしてやってみたらどうでしょうか?

>With Range("B5:C7")

With Range("M1:N2")  ←("B5:C7")を("M1:N2")に変更しました。
  St = .cells(1).value
  結合解除
  .value = St
End With

【60255】Re:セル結合を解除すると各セルに値が ...
発言  Abebobo  - 09/2/6(金) 2:04 -

引用なし
パスワード
   みなさんこんばんは
回答ではありませんが ・・・
Sub Fusigi()
Dim r As Range
Dim i As Long

Set r = Range("A1:C1")

For i = 1 To r.Count
 If r(i).Value = Empty Then
   Debug.Print "なし"
 Else
   Debug.Print r(i).Value
 End If
Next

End Sub
で、一つも ”なし” にならないということですか?
私がエクセル触りだした時は、そうなってた記憶が・・・
結合を解除すると左上だけに値が入っていて、他が空白なのにビックリした覚えがあります。
それ以来 今回のような状態になったことはありません。

【60256】Re:セル結合を解除すると各セルに値が ...
発言  ma  - 09/2/6(金) 9:18 -

引用なし
パスワード
   ▼ON さん:
>こんにちは よろしくお願いいたします
>
>下記のような結合セルがあり
>
>┌───────────┐
>│           │
>│   ABCD    │
>│           │
>└───────────┘
>
>これを、セル結合を解除 すると
>
>┌─────┬─────┐
>│ABCD │ABCD │
>├─────┼─────┤
>│ABCD │ABCD │
>└─────┴─────┘
>
>のようになりました
>
>このような結合セルはどうすれば出来ますか?
>
>どうも一般機能では無理なような気がしますが
>VBAでも無理そうな・・・
>
>試しに
>A1:C1を結合し
>Sub ABC()
>
>Dim a(1 To 3)
>  a(1) = "A"
>  a(2) = "B"
>  a(3) = "C"
>  Range("A1:C1") = a()
>End Sub
>とかしてみましたが駄目でした
>
>よろしくお願いいたします


もしかしたら、かなり違った考えかたしているかもしれませんが・・・・・。
下の物を、デバック(F8)しながらExeclの画面を見てもらえると

時折、Execlの操作でセルの結合しているところに貼り付けするとONさんのような状態になることがあります。
例  結合セルの列幅が偶数で結合4列・8列とかで結合されている。
   コピーしようとしているデーターは2列だとする。
これを、コピーして貼り付けすると結合が解除されて結合していた全セルにデーターが入ってしまう。

これとは違っていますかね〜・・・。


Sub Macro3()
'
' Macro3 Macro
' マクロ記録日 : 2009/2/6 ユーザー名 : ayumi
'

'A1を選択する。
  Range("A1").Select
  
'A1にABCDを値を入れる。
  ActiveCell.FormulaR1C1 = "ABCD"
'A1からD5を結合する。
  Range("A1:D5").Select
  Selection.MergeCells = True
  
'新たに、F1〜G1を選択してABCDを入れる。
  Range("F1:G1").Value = "ABCD"
  Range("F1:G1").Select
'
'このまま、コピーする。
  Selection.Copy
'A1をクリックする。
  Range("A1").Select ':D5
'貼り付けをする。
  ActiveSheet.Paste
End Sub

【60261】Re:セル結合を解除すると各セルに値が ...
発言  Jaka  - 09/2/6(金) 10:57 -

引用なし
パスワード
   ▼ON さん:
>これは、どのようにすれば実現できるのか知りたいです
どうしてイミディウインドウでそう表示されるのか、
イミディウインドウのプログラムを作ったわけじゃないので、
わかりません。

感じとしては、結合セルの場合は、自動で結合セルとして
値を取得してくれているんだなと思うのが普通だと思います。
実際、VBA上で取得してみると空なのだから、あまり自分の都合の良いように考えないのが良いんじゃないかと思いますけどね。
これじゃダメだって言う人も要るかもしれませんが...。

MSに質問してみるのが速そうな気もします。
多分、仕様ですって答えが返ってきそうですが。
そうすると開発者にでも聞くしか方法が無いんじゃないかと...。

【60265】Re:セル結合を解除すると各セルに値が ...
発言  ON  - 09/2/6(金) 11:15 -

引用なし
パスワード
   皆様 ありがとうございます
説明が悪くて申し訳ありません


To Jaka さん、ma さん

セル結合解除時に
各セルに書き込みをする
ということではありません


普通では、理解しにくいことだとおもいますが
>つまり、見かけ上結合されているのに、
>各セルに値が存在しています
なんです


To Abebobo さん

テストコードありがとうございました

Sub Fusigi2()
Dim r As Range
Dim i As Long

'Set r = Range("A1:C1")
Set r = Range("M1:N2")

For i = 1 To r.Count
 If r(i).Value = Empty Then
   Debug.Print "なし"
 Else
   Debug.Print r(i).Value
 End If
Next

'追加してみました
Debug.Print Range("M1").MergeArea.Address


End Sub


ABCD
ABCD
ABCD
ABCD
$M$1:$N$2
が返ります

>それ以来 今回のような状態になったことはありません。
私も始めての遭遇みたいなです


To ma さん

テストコードありがとうございました
試してみました

確かに?ですが

実態は
Sub Fusigi2()
の状態です


追加テスト1

不思議な結合セル M1:N2 を
新規ブックにコピーしてみました

状態は同じで
見かけ結合?で、

┌───────────┐
│           │
│   ABCD    │
│           │
└───────────┘


結合解除すると

┌─────┬─────┐
│ABCD │ABCD │
├─────┼─────┤
│ABCD │ABCD │
└─────┴─────┘

となってしまいました 
アハハ (^_^;)
みたいな感じです


追加テスト2

上記 元に戻すとすると
選択範囲には複数のデータ値があります。1 つのセルとして結合すると、
選択したセル範囲にある最も左上端にあるデータのみが保持されます
(空白セルは無視されます)。

がでて、OK、その後に セル結合解除すると

┌─────┬─────┐
│ABCD │     │
├─────┼─────┤
│     │     │
└─────┴─────┘

となりました

【60266】Re:セル結合を解除すると各セルに値が ...
発言  ON  - 09/2/6(金) 11:27 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございます

>どうしてイミディウインドウでそう表示されるのか、
>イミディウインドウのプログラムを作ったわけじゃないので、
>わかりません。


>>追加テスト2

>>上記 元に戻すとすると
>>選択範囲には複数のデータ値があります。1 つのセルとして結合すると、
>>選択したセル範囲にある最も左上端にあるデータのみが保持されます
>>(空白セルは無視されます)。

>>がでて、OK、その後に セル結合解除すると

>>┌─────┬─────┐
>>│ABCD │     │
>>├─────┼─────┤
>>│     │     │
>>└─────┴─────┘

>>となりました

を、さらに再結合して、
Sub Fusigi2()
を実行すると
$M$1:$N$2
ABCD
なし
なし
なし
$M$1
が、返りました


>MSに質問してみるのが速そうな気もします。
>多分、仕様ですって答えが返ってきそうですが。
>そうすると開発者にでも聞くしか方法が無いんじゃないかと...。

そんな感じもします・・・
ちょっと残念

【60273】Re:セル結合を解除すると各セルに値が ...
発言  n  - 09/2/6(金) 17:55 -

引用なし
パスワード
   一般機能で可能です。
他の結合セルから書式のみコピーします。

Sub test()
  With Sheets.Add.Range("A1:C1")
    .Value = [{"a","b","c"}]
    With .Offset(1)
      .Merge
      .Copy
    End With
    .PasteSpecial Paste:=xlFormats
    Application.CutCopyMode = False
    .Offset(1).UnMerge
  End With
End Sub

【60293】Re:セル結合を解除すると各セルに値が ...
お礼  ON  - 09/2/8(日) 9:49 -

引用なし
パスワード
   ▼n さん:
こんにちは
遅くなりました

ありがとうございます

>一般機能で可能です。
えー そうなんでか

コピペで、ポチ (○_○;)
で・出来ました

疑問が解けました

また、WITHのネスト 勉強になりました
ありがとうございました

ただ
.Value = [{"a","b","c"}]
初めて見たような気がします
動作はわかるのですが
なんとなくしっくり来ません
ググっても、うまくかかりませんでした
help等あれば、URL等紹介頂けるとうれしいです

よろしくお願いいたします

【60294】Re:セル結合を解除すると各セルに値が ...
発言  n  - 09/2/8(日) 13:05 -

引用なし
パスワード
   普通に
.Value = Array("a", "b", "c")
と書けば良かったですね、すみません。
でも2次元配列など簡単に記述できるので、時々使ったりしてます。
Range("A1:C2").Value = [{"a1", "b1", "c1";"a2","b2","c2"}]

[Evaluate メソッド]
://msdn.microsoft.com/ja-jp/library/cc328216.aspx

【60300】Re:セル結合を解除すると各セルに値が ...
お礼  ON  - 09/2/8(日) 21:46 -

引用なし
パスワード
   ▼n さん:
ありがとうございます

>Evaluate メソッド
>Evaluate メソッドの代わりに角かっこを使っても、
>同じ結果が得られます ([A1:C5] など)。たとえば、
>次の 3 組のコードでは、組ごとにそれぞれ同じ動作を表します。

理解できました


>.Value = Array("a", "b", "c")
>と書けば良かったですね、すみません。

>でも2次元配列など簡単に記述できるので、時々使ったりしてます。
>Range("A1:C2").Value = [{"a1", "b1", "c1";"a2","b2","c2"}]

勉強になりました
>2次元配列など簡単に記述できる
ん〜 ほんとですね
ちょっとした時、便利そうです
ありがとうございました


みなさま  ありがとうございました
解決です

今後もよろしくお願いいたします

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