質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

373閲覧

エクセルで特定の文字列が入力(プルダウンで選択)されてた時に指定のセルを罫線機能で斜線を表示したい

ponigi

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2024/04/01 05:52

実現したいこと

エクセルで特定の文字列が入力(プルダウンで選択)されてた時に指定のセルを罫線機能で斜線を表示したい

前提

エクセルには入力と「印刷」と「名前」の付けた2つのシートがあります。
「入力」シートの"H7~H36"に「A」「B」「C」「AB」「BC」と5つの文字列をプルダウンリストで設定してあります。
この"入力!H7"にプルダウンで「AB」もしくは「B」が入力された場合に「印刷」シートの"D5""E5""F5""G5"のセルに斜線が表示れるようにしたいです。
また"入力!H8"に「AB」「B」を入力すると今度は「印刷」シートの"D56""E56""F56""G56"に斜線を表示、"入力!H8"に"D107""E107""F107""G107"に罫線といった処理をしたいです。

発生している問題・エラーメッセージ

現在は名前の定義で「A」「B」「C」「AB」「BC」それぞれの名前を付けたセルに斜線を引いて、INDIRECT関数を使い「印刷」シートに罫線の画像を表示する方法でごまかしているのですが、動作が極端に遅いため、マクロやVBAを使って表示できないかと思い、質問させていただきました。

補足情報(FW/ツールのバージョンなど)

Microsoft 365
Windows 10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記でどうでしょう。

VBA

1Public Sub Test() 2 Dim i As Long 3 For i = 7 To 37 4 With Worksheets("印刷").Cells(i * 51 - 352, "D").Resize(, 4).Borders(xlDiagonalDown) 5 Select Case Worksheets("入力").Cells(i, "H").Value 6 Case "AB", "B" 7 .LineStyle = xlContinuous 8 Case Else 9 .LineStyle = xlNone 10 End Select 11 End With 12 Next 13End Sub

入力時にリアルタイムで反応させたい場合のコード

「入力」シートのモジュールに記述

vba

1Private Sub Worksheet_Change(ByVal Target As Range) 2 Dim r As Range 3 Set r = Intersect(Target, Range("H7:H36")) 4 If r Is Nothing Then Exit Sub 5 Dim c As Range 6 For Each c In r 7 With Worksheets("印刷").Cells(c.Row * 51 - 352, "D").Resize(, 4).Borders(xlDiagonalUp) 8 Select Case c.Value 9 Case "AB", "B" 10 .LineStyle = xlContinuous 11 Case Else 12 .LineStyle = xlNone 13 End Select 14 End With 15 Next 16End Sub

投稿2024/04/01 08:18

編集2024/04/03 14:06
hatena19

総合スコア33856

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ponigi

2024/04/02 01:20

hatena19様 ありがとうございます。 早速テストしてみました。 斜線は右肩上がりが良かったので .Borders(xlDiagonalDown)を.Borders(xlDiagonalUp)に変更させていただきました。 今回「A」「B」「C」「AB」「BC」入力後このマクロを実行しないと斜線の表示が、更新されないと思うのですが、再実行しなくても自動で実行できるような設定にはできないでしょうか? それとも、入力するたびに実行されていると処理重たくなってしまうのでしょうか?
hatena19

2024/04/02 04:27

入力時にリアルタイムで反応させたいということですね。 可能です。回答にコードを追記しておきます。
ponigi

2024/04/03 09:54

ありがとうございます。 快適に動いてます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問