質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

35643閲覧

【VBA】結合セルの値の取得

torisan

総合スコア678

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/08/23 07:45

Microsoft Office Personal 2010
エクセルVBAです。

例えばセルB3に『あああ』と入力されている時、
MsgBox Range("B3")
とすれば、
『あああ』
とメッセージが出ると思います。

これは良いのですが、指定したセルが結合セルだった場合、
一番左上のセルを指定しないと値が返ってきません。

例)
B3,B4,B5が結合セルで、値『あああ』が入っている場合
MsgBox Range("B3") 'あああ
MsgBox Range("B4") '△ブランク
MsgBox Range("B5") '△ブランク

これをB4,B5を指定しても『あああ』が返ってくるようにする方法はありますか?

尚、マクロを動かしたいエクセルは表になっており
間に空白のセルも含まれます。

VBA

1Sub ZZZ() 2 Dim i As Integer 3 Dim maxRow As Integer 4 i = 3 5 maxRow = Cells(Rows.Count, 3).End(xlUp).Row 6 7 While i <= maxRow 8 Select Case Range("B" & i) 9 Case "あああ" 10 Select Case Range("C" & i) 11 Case "項目1": Range("D" & i) = "簡単に" 12 Case "項目2": Range("D" & i) = "書くと" 13 Case "項目3": Range("D" & i) = "こんな" 14 End Select 15 Case "いいい" 16 Range("D" & i) = "感じの" 17 Case "ううう" 18 Select Case Range("C" & i) 19 Case "項目1": Range("D" & i) = "ことを" 20 Case "項目2": Range("D" & i) = "したい" 21 End Select 22 Case "えええ" 23 Select Case Range("C" & i) 24 Case "項目1": Range("D" & i) = "です。" 25 Case "項目2": Range("D" & i) = "朝食に" 26 Case "項目3": Range("D" & i) = "納豆は" 27 Case "項目4": Range("D" & i) = "欠かせ" 28 End Select 29 Case "おおお" 30 Range("D" & i) = "ない。" 31 End Select 32 i = i + 1 33 Wend 34End Sub 35

<現状>
現状
<理想>
理想

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

結合エリアはMergeAreaプロパティで表せます。
更にエリア内はItem配列に格納されるので、その中から1つ目を常に表示させれば良いと思われます。
次のような書き方でどうでしょうか。

VBA

1' 全て同じ値が表示されるはず 2MsgBox Range("B3").MergeArea.Item(1) 3MsgBox Range("B4").MergeArea.Item(1) 4MsgBox Range("B5").MergeArea.Item(1)

投稿2017/08/23 08:00

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torisan

2017/08/23 08:04

専用の関数がちゃんとあったんですね。 ありがとうございました!
guest

0

こんなかな?

MsgBox Range("B3").MergeArea(1) MsgBox Range("B4").MergeArea(1) MsgBox Range("B5").MergeArea(1)

投稿2017/08/23 07:59

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torisan

2017/08/23 08:04

お早い回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問