• ベストアンサー

ExcelのVBAを使用して自動で斜線を引く方法

Excelで、VBAを使用して、一定の条件の場合に、自動で斜線を引く・消去するための数式の構成を教えて頂けないでしょうか。 具体的には、次の様な条件になります。 1・同じブックの別のワークシートである「sheet1」のD3を参照する 2・D3が「空白」であった場合、同じブックの「sheet2」の「a1からc1を結合したセル」に斜線を引く 3・D3に「○」が入力された場合は、斜線を引かない(消去する) どうぞ、よろしくお願い致します。

noname#206588
noname#206588

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 まず御質問の機能を持たせたいExcelbookを開いて下さい。  次に、[Alt]キーを押しながら[F11]キーを押して下さい。  すると「Visual Basic for Applications」ウインドウが開きますので、その左側の方に表示されている「プロジェクト エクスプローラ」(「プロジェクト - VBAProject」と記されている画面)の中にある[Sheet1]と記されている箇所をダブルクリックして下さい。  次に、「Visual Basic for Applications」ウインドウの右側の方に表示されている「コード ウィンドウ」(一番広い画面)の左上にある[(General)]と記された箇所をクリックし、現れた選択肢の中にある[WorkSheet]を選択してクリックして下さい。  次に、「コード ウィンドウ」の中に次のVBAの構文を入力して下さい。 Private Sub Worksheet_Change(ByVal Target As Range) 'QNo.8956473 ExcelのVBAを使用して自動で斜線を引く方法 Dim InputCell, OutputSheet, OutputCell As String Dim myOnOff As Integer InputCell = "D3" '線を引く・消去の基準となるデータが入力されるセル OutputSheet = "Sheet2" '線を引く・消去を行うセルが存在するシート OutputCell = "A1" '線を引く・消去を行うセル Select Case Range(InputCell).Value Case "" myOnOff = xlContinuous Case "○" myOnOff = xlNone Case Else Exit Sub End Select With Sheets(OutputSheet).Range(OutputCell) .Borders(xlDiagonalUp).LineStyle = myOnOff .Borders(xlDiagonalDown).LineStyle = myOnOff End With End Sub  これで、Sheet1のD3セルに入力されている値が書き換えられて空欄になった場合には、Sheet2のA1セルを含んでいる結合セルにX字形に斜めの罫線が引かれ、Sheet1のD3セルに入力されている値が「○」に書き換えられた場合には、Sheet2のA1セルを含んでいる結合セルに引かれた斜めの罫線が消去されます。  又、Sheet1のD3セルに入力されている値がそれ以外のものである場合には何も起こりません。

関連するQ&A

  • Excel データ入力に応じて自動的に斜線を引きたいのですが

    Excel データ入力に応じて自動的に斜線を引きたいのですが ご覧いただきありがとうございます。エクセルで、データが入力されていないときはセルに斜線が引かれていて、データが入力されたら自動的にその斜線が消えるようにできるでしょうか。お分かりになられる方がいらっしゃいましたら、ご教示ください。 AC66:AJ67のセルが結合されていて、それが下にAC88:AJ89まで計11あります。 AC66:AJ67に数値が入った場合はその下のセルからAC88:AJ89までを一本の斜線(右上から左下の線)を引き、同じように2段目まで数値が入っている場合は2段目から一番したの段までを斜線を引きたいと思っています。 2段目に数値が入っている場合は必ず1段目にも数値が入っている状況です。 またその結合されたセルはIF関数が入っていて、他の入力用シートにリンクしています。入力用シートに数値が入っていない場合は空白で表示される状況です。 VBAを使って自動的に斜線を入れたいと思っています。 分かりにくい説明ですみませんが、添付の画像を見てください。 どなたかわかる方がいらっしゃいましたらお願い致します。

  • エクセル VBA

    .Formulaにてセルに他ブック参照した数式を入力しているのですが、参照シート名が半角数字又は全角数字の場合があり、「シートの選択」ウインドウが表示されてしまいます。 数式はIFを使用してシート名が全角・半角どちらの場合でも問題ない数式を入力してるので、「シートの選択」をしなくても問題ありません。 DisplayAlertsをFalseにしても表示されてしまいます。 「シートの選択」ウィンドウを表示させない、又はOKまたはキャンセルをVBAで押すことはできないでしょうか?

  • Excelのセルに斜線を引くマクロ

    Excel2007を使用しています。 画像のように,「印刷」シートと「データ」シートがあります。 画像のように,「印刷」シートのAO112~BZ112のセルを結合しています。 そのセルには,VLOOKUP関数で,「データ」シート10列目のデータを返すようにしています。 関数を見てもらえば分かるとおり, もし10列目にデータがなければ(VLOOKUPで値が0なら)””(空白)を返すようにしています。 以上のようなシートで,このセルにデータが無い場合, 画像のAO113~BZ113のように右上がりの斜線を引きたいのです。 もちろん,データが入っている場合は,斜線は消します。 マクロに関しては,まだまだ初心者のため, ほとんど分からないので,分かりやすく教えていただけませんでしょうか? お願いします。

  • エクセルVBA/シートの背景の変更

    エクセル2000です。 VBAでワークシートに背景を設定する場合、PC内に保存してあるファイルを使うなら以下でできます。 Sub haikei() With ActiveSheet .SetBackgroundPicture Filename:="C:\TEST\shape.jpg" End With End Sub これを、PC内ではなくワークシート上にオブジェクトとして貼り付けたJpegファイルを使って背景を設定するにはどのようなコードになるのでしょうか? ワークシート上のオブジェクトの名前は 「オブジェクト 1」 となっており、クリックすると数式バーには =EMBED("Photo Editor Photo","") と表示されます。 こんなことをしたい理由は、状況により配布した(自分のPC上でない)BOOKのワークシートの背景を一定の条件で変更したいためです。そのため、複数のJpegファイルを非表示にしたワークシート上にはりつけておき、背景の差し替えを行いたいと考えています。

  • 【Excel VBA】空白の結合セルに右上り斜線を引く

    Excel VBAは初心者です。 仕事で必要なため、アドバイスをいただけると非常に助かります。 よろしくお願いします。 【VBAで実現したいこと】  下記のようなセルで構成されている簡単な  申請書を作成しております。    結合セル1:ABCD列と4行目で結合されたセルで、氏名を入力します。  結合セル2:EFGH列と4行目で結合されたセルで、氏名を入力します。  結合セルA:ABCD列から5678行で結合されたセルです。  結合セルB:EFGH列から5678行で結合されたセルです。  ※結合セル1、2~10まで存在し、結合セルA、B~Jまで存在します。  結合セルAは結合セル1を参照し、結合セル1が空欄の場合  結合セルAに右上りの斜線を引きます。結合セル1が空欄でない場合、  何もしません。  結合セルBは結合セル2を参照し、結合セル2が空欄の場合  結合セルBに右上りの斜線を引きます。結合セル2が空欄でない場合、  何もしません。  同様な処理を、結合セルJ、結合セル10まで行います。 【教えていただきたいこと】  1.結合セルA~J、結合セル1~10全てが空欄だった場合、   空欄の結合セルは右上りの斜線を引きます。   下記のプログラムを作成しましたが、右上りの斜線が   引けません。   どのようにしたら良いでしょうか。     2.上記「VBAで実現したいこと」を行うためには、   下記のプログラムにどのような追加を行えば良いでしょうか。 【作成したプログラム】 Private Sub worksheet_change(ByVal target As Range) Dim i As Range For Each i In target If i.MergeArea.Value = "" Then i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlContinuous Else i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlNone End If Next i End Sub 以上、よろしくお願いします。

  • VBAでエラーメッセージが出ないようにしたい

    book1にbook2のセルをコピーして貼り付け、book2を閉じようとしたところ、シートにリンクが張られているのか以下のようなメッセージボックスが出てきます ----ここから----------------- 移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’xxx’が含まれています。この名前を使用しますか? コピーまたは移動先のシートに定義されている名前を使用する場合は「はい」をクリックします。 数式またはワークシートで参照する範囲の名前を変更する場合は、「いいえ」をクリックし、「名前の重複」ダイアログボックスに新しい名前を入力します。 ---------ここまで------------------ 取り敢えず「はい」をクリックして閉じているのですが、複数回このメッセージが繰り返し出てきて面倒なので、VBAでこのメッセージを出さないようにしたいのですが、どのようにすればよいのでしょうか?

  • excel 空白セルに自動で斜線をひきたいです

    EXCEL2007使用しています。 名簿シートと印刷シートがあります。 印刷シートのセルAJ33:AR37の結合セルに=IF(VLOOKUP($J$4,名簿!$A$2:$G$383,7)="","","印") がはいっています。 このセルが空白ならば斜線を引きたいのですが、なかなかうまくできません。 過去の質問等も参考にしましたが、斜線は引けても、今度は消えません・・・。 ちなみに連続印刷をすでに作ってあるのですが、この連続印刷にも対応させることは可能でしょうか? A1:C3の結合セルの名前は”番号”  印刷範囲の入力セルは”自”、”至”としてあります。 Sub 印刷開始() Range("番号") = Range("自") Do While Range("番号") <= Range("至") Sheets("印刷").PrintOut Range("番号") = Range("番号") + 1 Loop End Sub 説明力がなくて申し訳ないのですが、どうぞよろしくお願い致します。

  • ExcelでVBAで選択範囲の値のみを挿入

    始めて質問いたします。よろしくお願いします。 Excel2010にて作成された選択範囲(Sheet1)のセルを同じブックの別シート(Sheet2"A1:AB20")で参照しています。その参照部分をVBAにてコピーして、そのすぐ下("A21:AB40")に挿入していきます。自分で作成したコードでは、数式もコピーするので当然参照しているセルからずれてしまいます。(Sheet1)の数値はその度に変わりますので絶対参照にすることもできません。 作成したVBAに値のみをコピーするコードを追加したいので教えて下さい。 Private Sub CommandButton1_Click() Sheets("Sheet2").Range("A1:AB20").Copy Sheets("Sheet2").Range("A21:AB40").Insert Shift:=xlDown Application.CutCopyMode = False End Sub このコードだと、参照している "A1:AB20" がテキストなどの場合はうまくいきます。数式が入っていると当然ですが、数式をコピーしてしまいます。 いろいろなサイトを見ていると Paste:=xlPasteValues  が、値のみペーストだと書いてありますが、適応の仕方がわかりません。 Insert の場合はどうなるのかもわかりません。 同じような質問も探しましたが見つからなくて困っています。 よろしくお願いいたします。

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3コピー元ワークシート3 という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3ワークシート という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

専門家に質問してみよう