プロが教えるわが家の防犯対策術!

A1~A10までの範囲A1としてを結合させているのですが
A1の中にあるセルをカウントさせたいのですが
どうすればいいのでしょうか?

A 回答 (4件)

>>それと、今後「最初の質問内容以外の質問」をするときは、


>>一度締め切ってから別のスレッドでお願いします。
>了解です!
↑この発言に高感度UPw

大概、マナーに関してこういう指摘をすると、質問者さんは逆切れします。

実際のところ、
・アドバイスに対し、レスポンスが全く無い
・締め切りもしない
・質問者がアドバイスを見ているかどうかがわからない
・突っ込みが入ると放置スレッドになる
・etc...
そういう人だとわかったら、答えようとする気が失せます。。。

この考えは私だけでは無いと思います。

その点あなたは「了解です」しかも「!(感嘆符)付き」
素直な人だと感じました^^
是非解決に向かいましょう。


さてさて前置きはこれぐらいにしてと。。。


-----------------------------------------------
>ですが実行してみたのですがエラーとなりました。
んんんんん?
これだけではわかりません。。。

エラーが出たときには、
・走らせたプログラム抜粋の記載
・エラー発生行位置
・エラー内容「エラー番号」「エラー文字列」
を載せましょう。

それを見た人は
・単純エラーなのか
・前後の値の関係性によるエラーなのか
・構文エラーなのか
を推測し、さらに「質問者のやることの方向性」も考え、参考URLまで載せる場合もあります。


-----------------------------------------------
それでも「やりたい事」の詳細がよく書いてあったので、内容はわかりました
下にサンプルを張っておきます。

Option Explicit

Sub 結合セル数の出力()
  'このマクロブックのシート1を対照とする
  Dim l_xlsSheet As Worksheet
  Set l_xlsSheet = ThisWorkbook.Worksheets("Sheet1")
  
  'チェックするA列の行番号
  Dim l_lngRow    As Long
  l_lngRow = 1
  
  '行番号がシート最大行数を超えるまで続ける
  Do Until (l_lngRow > l_xlsSheet.Cells.Rows.Count)
    
    '対象セルを取得
    Dim l_rngA As Range
    Set l_rngA = l_xlsSheet.Cells(l_lngRow, 1)
    
    '結合セル数の取得
    Dim l_lngMargeCount As Long
    l_lngMargeCount = l_rngA.MergeArea.Cells.Count
    
    'セルが2セル以上であれば結合セルとなる
    If (l_rngA.MergeArea.Cells.Count > 1) Then
      '隣のセルに、結合セル数を出力する
      l_rngA.Offset(, 1).Value = l_lngMargeCount
    End If
    
    '次の行番号を用意
    l_lngRow = l_lngRow + l_lngMargeCount
  Loop
  
  MsgBox "終了"
End Sub


ここのVBカテにはVBAの質問もいっぱい上がっているので、暇なとき別の人の質問を最初から最後まで読むと、結構いいスキルが付くと思いますよ。
    • good
    • 0
この回答へのお礼

1050YENさん、ご回答ありがとうございます。
>了解です!
↑この発言に高感度UPw

以外なところで高感度が上がって
恐縮ですw

さすがに理系の思考回路をお持ちの方ですね。
マナーにおいても説明においても目的達成まで
の完璧なフローです。
私みたいに理系でないと説明部分で欠落が発生してしまうんですよね。。

さてサンプルプログラム実行してみました。
さすが完璧です。
思っていた通りに実行できました(≧∀≦)
ありがとうございます。

ひとつ質問させて頂きたいのですが、結合セル数の取得で
l_lngMargeCount = l_rngA.MergeArea.Cells.Count
として変数l_lngMargeCountに結合セルをカウントさせた数を
代入されていますが、そうなると次のIF文で
If l_lngMargeCount > 1 Then としても同じことになるのでしょうか?


>ここのVBカテにはVBAの質問もいっぱい上がっているので、
>暇なとき別の人の質問を最初から最後まで読むと、
>結構いいスキルが付くと思いますよ。

そうですね。VBAのスキルをもっとつけたいので暇でなくても
あえて読むようにしたいと思います。

お礼日時:2010/04/23 02:26

>ひとつ質問させて頂きたいのですが、


はい

>結合セル数の取得で
>l_lngMargeCount = l_rngA.MergeArea.Cells.Count
>として変数l_lngMargeCountに結合セルをカウントさせた数を代入されていますが、
はい

>そうなると次のIF文で
>If l_lngMargeCount > 1 Then としても同じことになるのでしょうか?
んんんんんんん?


この前の発言のサンプルで
l_lngMargeCount = l_rngA.MergeArea.Cells.Count
の後に、
If (l_rngA.MergeArea.Cells.Count > 1) Then
をやっていますが、、、

どのようなパターンを想定されているのかがわかりません。
まるっきり質問されていることを、サンプルはやっているように思います。


文章だけでの質問は、想像がしづらいので、
「文章」 + 「そちらで改造してみたコードの抜粋」
を載せるとわかりやすいです。


読解力が無くて、すいません。。。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
>そうなると次のIF文で
>If l_lngMargeCount > 1 Then としても同じことになるのでしょうか?
んんんんんんん?

すみません、説明不足でした。
If (l_rngA.MergeArea.Cells.Count > 1) Then
の意味はIf l_lngMargeCount > 1 Then と
同じ意味をもつということですか?と質問したかったのです。

質問する前にIf l_lngMargeCount > 1 Thenに置き換えて
事前に実行するべきでした。。
そして今置き換えてみました。
実行できました!

これにて締め切らせて頂きます!
親切なご対応誠にありがとうございまました(≧∀≦)

お礼日時:2010/04/24 04:30

補足されていたのですね。

。。
(お礼はなく補足で返されると、私のところにメールが飛ばないので、気づきづらいのです。。。)

それと、今後「最初の質問内容以外の質問」をするときは、一度締め切ってから別のスレッドでお願いします。
------------------------------

すいませんが、補足の内容を全く理解できません。
ここの掲示板は画面をUPできるので、画面イメージを載せてもらえませんか?

そして、どのような出力が行われたらよいかも載せてください。

仮に、現在組んでいるプログラムがあるのであれば、それも抜粋して載せてください。


あと。。。
>’おまけのFor~Nextを使用すればいいのでしょうか
実行してみましたか?

「出力結果が何を取得しているか」が、わかりますか?
    • good
    • 0
この回答へのお礼

返信ありがとございます。

>それと、今後「最初の質問内容以外の質問」をするときは、
>一度締め切ってから別のスレッドでお願いします。
了解です!

>’おまけのFor~Nextを使用すればいいのでしょうか
実行してみましたか?

ですが実行してみたのですがエラーとなりました。

今回の私の実行させたいことなのですが、
Sheet1のA列に結合されているセルがあり
(A1~A3)(A4~A6)(A7~A12)といった具合にセル数はバラバラです。
その隣のB列に同じ感覚で(B1~B3)(B4~B6)(B7~B12)と結合されている
空白のセルがあります。
A列のセル数をB列に表示させたいのです。
上の例でいうと(A1~A3)は3行が結合されているので隣のB列に3といった具合です。

お礼日時:2010/04/22 03:11

Dim l_rngA1 As Range



'A1を取得
Set l_rngA1 = Range("A1")
'結合セルのカウント
MsgBox l_rngA1.MergeArea.Cells.Count

'おまけ
'結合セルのアドレス値をデバッグ
Dim l_rngWk As Range
For Each l_rngWk In l_rngA1.MergeArea.Cells
  Debug.Print l_rngWk.Address(False, False)
Next

この回答への補足

返信ありがとうございます。
確かに上記でカウントできたんですが、実はA列にセルの結合がA1
の次に連なっていくつかあり、その各々のカウントの結果をB列に表示させたいのです。B列もA列と同じ間隔で結合されています。

これをそれぞれカウントさせ、結果をB列に表示させるには
’おまけのFor~Nextを使用すればいいのでしょうか。
宜しければご教授お願い致します。

補足日時:2010/04/19 18:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!