• 締切済み

ExcelVBAで、マージのコレクションの取得

pkh4989の回答

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.1

こんにちは。 >SpecialCellsメソッドみたいなので無いのでしょうか? ないようですね。 以下は、RangeをFor Eachループで取得する例です。ご参考に・・・ Sub MergeCell取得()   Dim wRange   As Range   Dim c     As Range   '   Set wRange = Nothing   With ActiveSheet     For Each c In .Range("A1:K30")       If c.MergeCells Then         'MsgBox c.Address & " " & c.MergeArea.Address         If wRange Is Nothing Then           Set wRange = .Range(c.Address(1, 1))         Else           Set wRange = Application.Union(wRange, .Range(c.Address(1, 1)))         End If       End If     Next   End With   If Not wRange Is Nothing Then     MsgBox wRange.Address   End If End Sub

関連するQ&A

  • エクセル2013VBA結合セルの間のセル位置取得

    いつもお世話になってます。 エクセル2013VBAで質問です。 B3:B4セルが結合されています。また、C3:AG3セル(31セル分)も結合されています。 その時、C4:AG4セルを取得したいのですが位置がずれて思うように取得できません。 どのような指定をすればよろしいでしょうか? お手数ですがお願いいたします。 下記は試してみてだめだったもののうちの一つです。 Sub test() Range("B3").Offset(0, 1).MergeArea.Select Range("B3").Offset(1, 0).Resize(1, 31).Select End Sub

  • Excelvba 図形のコピー

    Excelvba 2010のVBAについてご教授願います。 Sheet1にある楕円の図形をSheet2の結合セルの個所にコピーしたいのですが、 コピーできません(貼付できていないといった方が良いのかも)。 但し、コピー先の結合セルには文字が入っており(「有」という文字)、 この文字はそのまま残した方法で楕円の図のみ文字の上に上書きというか 文字にかぶせたいのです。 コードは以下の様に記述しました。 WorkSheets("Sheet2").Activate Worksheets("Sheet1").Shapes("楕円").Select Selection.Copy ActiveSheets.Range("EE120").MergeArea.Select ActiveSheet.Paste

  • ExcelVBAでの結合セルの選択について

    ExcelVBAの超初心者です。 3つを1つのセルに結合したものが横に15個並んでいます。 毎月、一つ右隣のセルに別シートの集計結果を転記させたいと考えています。 (ちなみに、左端から2つの結合セルは項目として使用しており、そこも結合されています) Range("A6").End(xlToRight).Offset(0, 1) = Sheets("前年・予算").Range("B15") 上記のように入力すると、右隣に移動せず、いつも同じセルに転記されてしまいます。 インターネットでいろいろ検索したところ、「結合セルはVBAには適さない」みたいな 意見もあり、もしかしたら出来ないのかな?とも思っています。 もし、やり方をご存じの方がいたら方法を教えて欲しいです。 よろしくお願い致します。

  • 任意のセル選択範囲内のセルの名前のコレクション

    任意に選択したセル範囲内のセルの名前のコレクションを取得したいと考えています。 On Error Resume Next For Each 名前 In Selection    処理内容 Next On Error GoTo 0 と、すると取得することは可能なんですが、全てのセルを検索するため範囲が大きいと時間が掛かります。 Namesコレクションを利用して、セルアドレスがセル範囲に入っているか?を調べる方法も考えたのですが、これまた時間が掛かります。 どなたか?詳しい方!こんな方法もあるよ!!っての教えて頂けないでしょうか?宜しくお願い致します。

  • 使用中のセル範囲に空白があるか取得するには?

    For Each r In ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks) ’空白セルに対して処理を行なう Next r このようなコードの場合、使用中のセル範囲に空白がないとエラーになるので、 ループに入る前に、空白セルがあるかを取得したいのですが、 どういう方法があるのでしょうか?

  • ExcelVBA 選択したセルの取得

    こんにちは。ゆきのです。 選択した範囲のセルに対して、Excelのマクロで 1回ずつ処理を行いたいと考えています。 まずセル数を取得したいのですが、  「selection.cells.count」でセル数を取得すると、  同じセルが複数回カウントされます。 またセルの範囲を取得したいのですが、  「selection.address」で範囲を取得すると、  重複したセルを含んだそれぞれの範囲が取得されます。 例えば、  (1)  「$A$1」を「ctl」+「左クリック」で3回選択した状態だと、  「selection.address」が「$A$1,$A$1,$A$1」となり、  「selection.cells.count」は「3」となります。  (2)  「ctl」+「左クリック」で「A1:B1」「A1:A2」を連続で選択した状態だと、  「selection.address」が「$A$1:$B$1,$A$1:$A$2」となり、  「selection.cells.count」は「4」となります。  ($A$1が2回カウントされます) この時、同じセルを複数回カウントせずにセル数を 取得することはにできるのでしょうか? (上の例の場合ですと、(1)が「1」、(2)が「3」と取得したいです。) また、複数選択で範囲を取得する場合に選択が重複したセルを 除いた状態の範囲を取得することはできるのでしょうか? 処理したセルを記憶させるなどの方法は考えてみたのですが、 別の方法はないかと思い、質問させていただきました。 どなたか、教えて頂けませんか?? よろしくお願いします。

  • ExcelVBA異なる適用先範囲の条件付き書式取得

    お世話になります。ExcelVBA(Excel2007)にて質問となります。 A1:E1セルにに「1」、「2」、「-」、「4」、「5」と入っており、 条件付き書式で以下の条件が登録されている場合、 FormatConditionsコレクションのFormula1で目的の数式を取得出来ません。 条件1:数式「=A1=1」の適用先「=$A$1」 条件2:数式「=A1="-"」の適用先「=$A$1:$E$1」 イミディウィンドウで実行した結果、次のようになります。 ~~~~~~~~~~~~~~~~~~~~~~~~ debug.print range("A1").FormatConditions.Count 2 debug.print range("A1").FormatConditions(1).Formula1 =A1="-" debug.print range("A1").FormatConditions(2).Formula1 =A1="-" ~~~~~~~~~~~~~~~~~~~~~~~~ セルA1を照査対象とした場合、count数は2と得られるのですが、 FormatConditions(1).Formula1で「=A1="-"」が取得されます。 「=A1=1」を取得する方法はどうすればいいでしょうか? 条件2の適用先を「=$A$1」とした場合は意図した値を取得できました。 ~~~~~~~~~~~~~~~~~~~~~~~~ debug.print range("A1").FormatConditions.Count 2 debug.print range("A1").FormatConditions(1).Formula1 =A1=1 debug.print range("A1").FormatConditions(2).Formula1 =A1="-" ~~~~~~~~~~~~~~~~~~~~~~~~

  • ExcelVBAで変数を用いた範囲指定について

    お世話になります。 ExcelVBAで困っていますので、アドバイスをお願いします。 A5:A10とD5:D10までといったように離れたセルへ Rangeを用いて範囲指定を行いたいのですが、 その際、行を示す数字に変数を用いたいと考えています。 この場合、どういう指定をしたら宜しいでしょうか? またRangeではなく他の方法もありましたら、 是非、ご提案願います。 どうぞよろしくお願いします。

  • CollectionとArrayの呼び出し順

    こんばんは。 いつも勉強させてもらっています。 ご教授ください。 セル範囲A1:B3に適当な値を入れ 下記のコードを実行してみました。 ----------------------------------------------- Sub Test()   Dim Rng As Range   Dim myRange As Range   Set myRange = Range("A1").CurrentRegion     For Each Rng In myRange       Debug.Print "Collection: " & Rng.Value     Next Rng   Dim Ary   Dim myArray      myArray = Range("A1").CurrentRegion.Value     For Each Ary In myArray       Debug.Print "Array: " & Ary     Next Ary End Sub ----------------------------------------------- その結果、 Collectionの場合は、 A1>B1 >A2>B2 >A3>B3 Arrayの場合は、   A1>A2>A3 >B1>B2>B3 の順で呼び出されました。 なぜこのような違いがでるのか分かりません。 教えてください。 宜しくお願いします。   

  • ExcelVBAでのオートフィルの使い方

    Excel2003です。 Bセルに入っている値をHセルまで右方向にオートフィルするマクロを組んでいるのですが、うまく動きません。 Bセルの最終行は変動し、オートフィルはBセルの最終行と最終行の1つ手前の2つ分をオートフィルしたいのです。 Range("B1").End(xlDown).Offset(-1, 0).Select Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault Range("B1").End(xlDown).Offset(0, 0).Select Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault これで、オートフィルしようと思っていたのですが、 Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault この式の実行で、 実行時エラー'1004' RangeクラスのAutoFillメソッドが失敗しました と、出てしまいます。   Selection.AutoFill Destination:=Range("B23:H23"), Type:=xlFillDefault こういうマクロなら動くので、AutoFillの後に明確な範囲指定をしていないせいなのでしょうか? 最終行が変動してしまう為、このような明確な範囲指定をする事ができません。 いい解決方法はないでしょうか?