Excel2007を使用しています。
画像のように,「印刷」シートと「データ」シートがあります。
画像のように,「印刷」シートのAO112~BZ112のセルを結合しています。
そのセルには,VLOOKUP関数で,「データ」シート10列目のデータを返すようにしています。
関数を見てもらえば分かるとおり,
もし10列目にデータがなければ(VLOOKUPで値が0なら)””(空白)を返すようにしています。
以上のようなシートで,このセルにデータが無い場合,
画像のAO113~BZ113のように右上がりの斜線を引きたいのです。
もちろん,データが入っている場合は,斜線は消します。
マクロに関しては,まだまだ初心者のため,
ほとんど分からないので,分かりやすく教えていただけませんでしょうか?
お願いします。
No.4ベストアンサー
- 回答日時:
No.2です。
次のように変更しました。
If Target.Column = 81 And Target.Row = 2 Then
'Stop
myR = Application.VLookup(Range("$CC$2"), Sheets("データ").Range("1:1048576"), 10, False)
If IsError(myR) Then
Range("AO113:BZ113").Borders(xlDiagonalUp).LineStyle = xlContinuous
Range("AO113:BZ113").ClearContents
Else
Range("AO113:BZ113").Borders(xlDiagonalUp).LineStyle = xlNone
Range("AO113:BZ113").Value = myR
End If
No.5
- 回答日時:
横からおじゃまします。
CC2の値が変わった時にマクロが動作するようにすればいいと思います。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$CC$2" Then Exit Sub
If Range("AO112").Value = "" Then
Range("AO112:BZ112").Borders(xlDiagonalUp).LineStyle = xlContinuous
Else
Range("AO112:BZ112").Borders(xlDiagonalUp).LineStyle = xlNone
End If
End Sub
ご希望通りの動作であればよいのですが。
親切にありがとうございました。
うまくできました。
少しだけマクロの内容も理解できたように思います。
また機会がありましたらよろしくお願いします。
No.3
- 回答日時:
No.2です。
AO112には、式が入っているのですから、判断条件には、使えませんね。
マクロの中で式を評価する必要があります。
AO112の式に何が入っているか教えてもらえますか。
画像では見えにくいため。
ご回答ありがとうございます。
AO112の式は,『データ』シートからVLOOKUP関数でデータを返すようにしています。
このファイルは,Sheet1が『印刷』シートで,Sheet2が『データ』という2つのシートから成っています。
『印刷』シートのAO112は,CC2のセルに入力した数字を基に,VLOOKUP関数を使って
『データ』シートの10列目の値を返すようにしています。
しかし,『データ』シートの10列目は,値が入っていないセルもあるので,その場合は空白""を返すようにしているため,次のような式になっています。
=IF(VLOOKUP($CC$2,'データ'!$1:$1048576,10)=0,"",VLOOKUP($CC$2,'データ'!$1:$1048576,10))
もしかしたら,この式も,もっと簡単にできるのかもしれませんが。。。
いちおう,この式を使うことで,『データ』シートの10列目にデータがあれば,そのデータをAO112に記入し,
データが無い場合は,空白のままということになっています。
そこで,今回の質問は,その空白の時に斜線を引きたいということなんです。
文章力がないので,わかりにくいかもしれませんが
この説明でいかがでしょうか?
よろしくお願いします。
No.2
- 回答日時:
以下のコードを標準モジュールではなくワークシートのコードに貼り付けてください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 41 And Target.Row = 112 Then
If Range("AO112") = "" Then
Range("AO113:BZ113").Borders(xlDiagonalUp).LineStyle = xlContinuous
Else
Range("AO113:BZ113").Borders(xlDiagonalUp).LineStyle = xlNone
End If
End If
End Sub
早速ご回答ありがとうございました。
私の説明が悪かったようで,
AO112にデータが無ければ,AO112に右上がりの斜線を引くようにしたいのです。
(AO113ではありませんでした。すみません)
そこで,教えていただいたマクロの
>If Range("AO112") = "" Then
>.Borders(xlDiagonalUp).LineStyle = xlContinuous
>Else
>Range("AO113:BZ113").Borders(xlDiagonalUp).LineStyle = xlNone
Range("AO113:BZ113")をRange("AO112:BZ112")に変えてみました。
ところが,AO112には,次のような数式が入っています。
=IF(VLOOKUP($CC$2,'データ'!$1:$1048576,10)=0,"",VLOOKUP($CC$2,'データ'!$1:$1048576,10))
すると,数式が入っているので""と思ってもらえなかったのか。。。
斜線が引けませんでした。
この数式を消すと引けるので,もう一歩だと思うのですが。。。
まったくのマクロ初心者のため,さっぱり分かりません。
よろしくお願いします。
No.1
- 回答日時:
以下でどうでしょうか?
Sub macro()
With Worksheets("印刷")
If .Range("AO112").Value = "" Then
Shapes.AddLine .Range("AO113").Left, _
.Range("AO113").Top + .Range("AO113").Height, .Range("BZ113").Left, .Range("BZ113").Top
End If
End With
End Sub
早速のご回答ありがとうございます。
2点,質問してよいでしょうか?
1.斜線を引くことはできるのですが,「データ」シートからVLOOKUP関数でデータを引用してくるのですが,データが変わる度に,自動でマクロが実行できるようにしたいのですが。。。。連続印刷する時に対応して欲しいのです。
2.新たなデータになったとき,AO112のセルにデータが入っている時は,斜線が消えなければならないのですが,残ったままになっています。
以上の2点をよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) 【Excel関数】値が合致するセルの隣のセルを表示させたい 8 2022/10/12 17:44
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
excelの不要な行の削除ができな...
-
Excelでシートの違うデータでグ...
-
複数シートからデータを拾って...
-
シート削除して同名シート追加...
-
トランジスタの選び方
-
他のシートの一番下の行データ...
-
エクセルで1つのシートを拠点...
-
エクセル:データをシートに飛...
-
エクセルのカメラ機能について
-
LiberaOfficeでグラフを別シー...
-
ユーザーフォームで別シートを...
-
エクセルで、各シートにある品...
-
コンボボックスの参照先(ListF...
-
CSVデータをエクセルで並び替え
-
EXCELスクロールバーのつまみの...
-
エクセル 縦に長い表の印刷時...
-
別々のシートの表をピボットテ...
-
Excelのセルに斜線を引くマクロ
-
Excel 売上管理シートに入力し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数シートからデータを拾って...
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
VBAで CTRL+HOMEの位置へ移動...
-
【エクセルマクロ】複数シート...
-
トランジスタの選び方
-
EXCEL 複数行のデータを1行にま...
-
EXCELで2つのファイルから重複...
-
別々のシートの表をピボットテ...
-
エクセル VBA VLOOKUP
-
他のシートの一番下の行データ...
-
エクセルのカメラ機能について
-
時間帯の重複を除いた集計について
-
EXCEL の表を一行ずつシートに...
-
ファンモータが作動しない。
-
エクセルで名簿を50音で切り分ける
-
エクセル マクロ "特定の日付...
おすすめ情報