アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCELVBAであるセルに設定されている条件式書式を取得したいと
以下のマクロを組みました。しかし、3つ設定されている条件式のうち
1つの条件が3回表示されるため、困っています。
何が悪いのかご教授ください。

Public Sub FormatConditionsTest()
Dim obj As Range
Set obj = Cells(108, 10)
Dim colFmt As FormatConditions
Set colFmt = obj.FormatConditions
Dim item As FormatCondition
For Each item In colFmt
MsgBox (item.Formula1)
Next
End Sub

「EXCELVBAであるセルに設定されてい」の質問画像

A 回答 (2件)

Cells(108, 10)に設定されている条件付き書式の[適用先]のセル範囲がそれぞれ違うと、


Formula1などの条件付き書式情報が正しく取得できないようです。
仕様なのかバグなのか知りませんが。

なので、ご提示の3つの条件の[適用先]を同一セル範囲に揃えてください。

どうしても、違う範囲を設定する必要がある場合、
作業用シートや作業用ブックにコピーして
ModifyAppliesToRangeメソッドで範囲を揃えてあげると取れます。

Private Sub test1()
  ActiveSheet.Copy
  Application.OnTime Now, "'test2 0'"
End Sub

Sub test2(ByVal dummy As Long)
  '【注意】ActiveWorkbook.Close False するので単独実行はしないで
  Dim obj  As Range
  Dim colFmt As FormatConditions
  Dim item  As FormatCondition
  Dim ret() As String
  Dim x   As Long
  Dim i   As Long
  
  Set obj = Cells(108, 10)
  Set colFmt = obj.FormatConditions
  For Each item In colFmt
    item.ModifyAppliesToRange obj
  Next
  x = colFmt.Count
  ReDim ret(1 To x)
  For i = 1 To x
    ret(i) = colFmt.item(i).Formula1
  Next
  ActiveWorkbook.Close False
  MsgBox Join(ret, vbLf)
  Erase ret
  Set obj = Nothing
  Set colFmt = Nothing
End Sub

ActiveSheet.Copyから続けて取ろうとすると、どうもうまくいきません。
コピー元のFormatConditionsが影響を受けてしまうなど、挙動不審なところがあります。?
その為、Application.OnTimeで一拍おいてます。

#もしかしたら他に簡易な方法があるのかもしれませんが、
#とりあえず取れたんで良しとしてしまいました :)
    • good
    • 0
この回答へのお礼

ありがとうございました。参考になりました。
>セル範囲がそれぞれ違うと・・・
確かに疑っていた箇所だったので、バグか仕様かわからないのが気になります。

お礼日時:2010/04/22 10:29

http://okwave.jp/qa/q1455002.html

参考URLで提示されているコードが参考になると思うのですが、質問趣旨とちがったらごめんなさい。

参考URL:http://okwave.jp/qa/q1455002.html
    • good
    • 0
この回答へのお礼

ありがとうございました。参考にさせていただきます。

お礼日時:2010/04/22 10:26

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