こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

塗りつぶしをしたセル色を特定のセルのフォント文字に

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

ActiveSheet.Protect UserInterfaceOnly:=True

Dim mycolor

If Target.Column Mod 1 = 0 And Target.Column >= 4 And Target.Column <= 24 Then

mycolor = Target.Interior.ColorIndex

Range("B5:B38").Font.ColorIndex = xlAutomatic

Range("B" & Target.Row).Font.ColorIndex = mycolor

Else

mycolor = xlAutomatic

Range("B5:B38").Font.ColorIndex = xlAutomatic

End If

End Sub


お世話になります、このコードは列D~Uまでの4~24列の特定の箇所のセルを塗りつぶしにしています。

その塗りつぶしたセルを選択されているとB5~B38に記入されている文字が塗りつぶされた文字と一緒になると言うVBAです。

質問がいくつかあります。

(1)D列~U列の38行目以降のセルを選択すると「FontクラスのColor Indexプロパティを設定出来ません。」となります。多分B38以降にはセルが塗りつぶしされておらず、B38以降に文字が書かれていないのでエラーとなってしまうのではないかと思います。これの解決策はありますか?

(2)E5~E38のセルのどこでも良いので数字を入力したら、E5~E38が同じ数字に自動変換するVBAは出来るのでしょうか?

(3)同じようにT5~T38のセルのどこでも良いので数字を入力したら、T5~T38が同じ数字に自動変換するVBAは出来るのでしょうか?

(4)同じようにD6~D38のセルのどこでも良いので数字を入力したら、D6~D38が同じ数字に自動変換するVBAは出来るのでしょうか?

投稿日時 - 2014-08-22 13:53:09

QNo.8726096

すぐに回答ほしいです

質問者が選んだベストアンサー

> (1)D列~U列の38行目以降のセルを選択すると「FontクラスのColor Indexプロパティを設定出来ません。」

Range("B" & Target.Row)がNULLでなければColor Indexプロパティを設定するようにしてはいかがでしょう。

> (2)E5~E38のセルのどこでも良いので数字を入力したら、E5~E38が同じ数字に自動変換する

If Not Application.Intersect(Target, Range("E5:E38")) Is Nothing Then
Application.EnableEvents = False
Range("E5:E38").Value = Target.Value
Application.EnableEvents = True
End If

上記のような感じでいかがでしょう。

投稿日時 - 2014-08-22 19:40:39

補足

ありがとうございます、助かりました。

もう一つ質問があるのですが、

(1)例えばB5に文字が何も記入されていない場合、C5~X5に記載されている文字を消し印刷時には空白表示となる様にし、B5に再び文字を記入するとC5~X5に記載した文字を再び記載する方法と言うのも出来るのでしょうか?

(2)同じようにB6~B39の各行も(1)の5行目の様に実行する事は出来るのでしょうか?

投稿日時 - 2014-08-24 16:24:14

お礼

この度はありがとうございました、ヒントになり助かりました!!

投稿日時 - 2014-08-26 03:05:25

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

> 1)例えばB5に文字が何も記入されていない場合、C5~X5に記載されている文字を消し印刷時には空白表示となる様にし、B5に再び文字を記入するとC5~X5に記載した文字を再び記載する方法と言うのも出来るのでしょうか?

C5~X5セルに

=IF($B$5="","","記載されている文字")

と入力してください。

投稿日時 - 2014-08-24 16:42:28

お礼

この度はありがとうございました、ヒントになり助かりました!!

投稿日時 - 2014-08-26 03:05:06

ANo.2

No1補足です

蛇足だとは思いますが
Private Sub Worksheet_Change(ByVal Target As Range)
でのコードです。

投稿日時 - 2014-08-22 19:44:21

補足

ありがとうございます、助かりました。

もう一つ質問があるのですが、

(1)例えばB5に文字が何も記入されていない場合、C5~X5に記載されている文字を消し印刷時には空白表示となる様にし、B5に再び文字を記入するとC5~X5に記載した文字を再び記載する方法と言うのも出来るのでしょうか?

(2)同じようにB6~B39の各行も(1)の5行目の様に実行する事は出来るのでしょうか?

投稿日時 - 2014-08-24 16:23:46

お礼

この度はありがとうございました、ヒントになり助かりました!!

投稿日時 - 2014-08-26 03:04:57

あなたにオススメの質問