Excel VBA質問箱 IV

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

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


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

【24255】シート間の条件付書式について kaeru144 05/4/17(日) 21:28 質問[未読]
【24260】Re:シート間の条件付書式について ichinose 05/4/17(日) 23:53 発言[未読]
【24261】Re:シート間の条件付書式について kaeru144 05/4/18(月) 6:15 質問[未読]
【24262】Re:シート間の条件付書式について ichinose 05/4/18(月) 7:55 発言[未読]
【24263】Re:シート間の条件付書式について 追伸 ichinose 05/4/18(月) 7:59 発言[未読]
【24319】Re:シート間の条件付書式について 追伸 kaeru144 05/4/19(火) 12:08 お礼[未読]

【24255】シート間の条件付書式について
質問  kaeru144  - 05/4/17(日) 21:28 -

引用なし
パスワード
   今、VBAに条件付書式のVBAにチャレンジ中です
以下のようにシート内の場合、作成することができました

 Range("B2").Activate
 With Selection
  Selection.FormatConditions.Delete
  Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
    Formula1:="=B1"
  Selection.FormatConditions(1).Interior.ColorIndex = 38
 End With

次に試みたいこととして、シート間の条件付書式を考えています。可能であれば、ファイルサイズがかなり小さくて済むのですが。具体的には、上の6行目、=B1が=sheet2!B2としたいのです。どうでしょうか。ご教授下さい。

【24260】Re:シート間の条件付書式について
発言  ichinose  - 05/4/17(日) 23:53 -

引用なし
パスワード
   ▼kaeru144 さん:
こんばんは。
>今、VBAに条件付書式のVBAにチャレンジ中です
>以下のようにシート内の場合、作成することができました
>
> Range("B2").Activate
> With Selection
>  Selection.FormatConditions.Delete
>  Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
>    Formula1:="=B1"
>  Selection.FormatConditions(1).Interior.ColorIndex = 38
> End With
>
>次に試みたいこととして、シート間の条件付書式を考えています。可能であれば、ファイルサイズがかなり小さくて済むのですが。具体的には、上の6行目、=B1が=sheet2!B2としたいのです。どうでしょうか。ご教授下さい。
↑こういうのは、そのままだと出来ないので、一度、
Sheet2!B2に「名前の定義」を使用して名前を付けると可能になります。

'===========================================================
Sub test()
  Application.Names.Add Name:="sheet2b2", RefersTo:="=sheet2!$b$2"
  With Range("B2").FormatConditions
   .Delete
   .Add Type:=xlCellValue, Operator:=xlEqual, _
    Formula1:="=sheet2B2"
   .Item(1).Interior.ColorIndex = 38
   End With
End Sub

確認してみて下さい。

【24261】Re:シート間の条件付書式について
質問  kaeru144  - 05/4/18(月) 6:15 -

引用なし
パスワード
   ▼ichinose さん:
>Sheet2!B2に「名前の定義」を使用して名前を付けると可能になります。
>
>'===========================================================
>Sub test()
>  Application.Names.Add Name:="sheet2b2", RefersTo:="=sheet2!$b$2"
>  With Range("B2").FormatConditions
>   .Delete
>   .Add Type:=xlCellValue, Operator:=xlEqual, _
>    Formula1:="=sheet2B2"
>   .Item(1).Interior.ColorIndex = 38
>   End With
>End Sub
>
>確認してみて下さい。

早速有り難うございました。確かにshee2!B2からの読み込みができました。しかしながら、次の問題点が・・・、B2はsheet!B2と一致しない時色つけができたのですが、その書式をコピーしても、B3はsheet!B3とならないのです。2行目を相対参照にしても駄目みたいです。ご教授下さい。

その後に続く、マクロはこうなっています

  Range("B2").Select
  Selection.Copy
  jjj = 1
   For jj = jjj To 5
   Range(Cells(2, jj * 2), Cells(3, jj * 2)).Activate
   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone
  Next jj

【24262】Re:シート間の条件付書式について
発言  ichinose  - 05/4/18(月) 7:55 -

引用なし
パスワード
   ▼kaeru144 さん:
おはようございます。
相対参照は、Names.AddでRefersToR1C1という引数使用しないと出来ないみたいですねえ。

'=========================================================
Sub test()
  Range("b2").Select
  Application.Names.Add Name:="sheet2b2", RefersToR1C1:="=Sheet2!RC"
  With Range("B2").FormatConditions
   .Delete
   .Add Type:=xlCellValue, Operator:=xlEqual, _
    Formula1:="=sheet2B2"
   .Item(1).Interior.ColorIndex = 38
   End With
  Range("B2").Copy
  jjj = 1
  For jj = jjj To 5
   Range(Cells(2, jj * 2), Cells(3, jj * 2)). _
    PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone
   Next jj
End Sub

これで確認してみて下さい。

【24263】Re:シート間の条件付書式について 追伸
発言  ichinose  - 05/4/18(月) 7:59 -

引用なし
パスワード
   >相対参照は、Names.AddでRefersToR1C1という引数使用しないと出来ないみたいですねえ。
↑これ、Excel2000では出来ませんでした。他のバージョンでは、試してません。
これは、試してみて下さい

【24319】Re:シート間の条件付書式について 追伸
お礼  kaeru144  - 05/4/19(火) 12:08 -

引用なし
パスワード
   みなさま ありがとうございました
無事に動いております。
このマクロのお陰で、1,000kBのファイルサイズが700kBまで少なくなりました。

追伸:私はExcel2002ですので大丈夫でした。

▼ichinose さん:
>>相対参照は、Names.AddでRefersToR1C1という引数使用しないと出来ないみたいですねえ。
>↑これ、Excel2000では出来ませんでした。他のバージョンでは、試してません。
>これは、試してみて下さい

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