教えて!しごとの先生
教えて!しごとの先生
  • 解決済み

excelのマクロで罫線の編集をしたく、ご教授願えませんでしょうか。 説明がつたなく、申し訳ございません。 添付…

excelのマクロで罫線の編集をしたく、ご教授願えませんでしょうか。 説明がつたなく、申し訳ございません。 添付の画像ファイル(無題.jpg)をご参照ください。左表が元、右表が希望する罫線の引かれ方です。 A列:No B列:親部品 C列:子部品 D列:記号1 E列:記号2 F列:記号3 G列:記号4 H列:記号5 B列「親部品」、E列「記号2」、H列「記号5」の いずれのセルにも空白セルが存在する場合、下位に文字列が入力されている セルが出てこない限り、セル上部(top)に罫線を引かない。 罫線を引かない列範囲は、A列「No」~H列「記号5」としたいが、 F列「記号3」~G列「記号4」の範囲に限っては、セル上部(top)に 「点線(細)」で罫線を設定したい。 です。 なにとぞよろしくお願いいたします。

続きを読む

119閲覧

回答(4件)

  • ベストアンサー

    画像を見る限り、言いかえれば B列のセルに空白セルが存在する場合、下位に文字列が入力されているセルが出てこない限り、A~H列のセル上部(top)の罫線を一旦全部消す。その後、F列とG列に限っては、セル上部(top)の罫線を「点線(細)」にする。 ということでしょうか。

  • 線をなしにするだけだと薄い線が残るので背景色を白にしています。 薄い線を残したままにする場合は、以下の箇所を削除してください。 With Intersect(myR, Range("A:H")) .Interior.Color = vbWhite End With ------------------------- Sub 罫線() Dim Lr As Long Dim k As Long Dim myR As Range Set myR = Rows(1) Lr = Cells(Rows.Count, 1).End(xlUp).Row Cells(2, Columns.Count - 1).Resize(Lr - 2).Formula = _ "=IF((COUNTBLANK(B2)+COUNTBLANK(E2)+COUNTBLANK(H2)=0)+(COUNTA(B3,E3,H3)<>3)=2,ROW(),"""")" Cells(2, Columns.Count).Resize(Lr - 2).Formula = _ "=IF((COUNTBLANK(B3)+COUNTBLANK(E3)+COUNTBLANK(H3)=3)+(COUNTA(B2,E2,H2)>0)=0,ROW(),"""")" For k = 1 To WorksheetFunction.CountIf(Columns(Columns.Count - 1), ">0") Set myR = Union(myR, Rows(WorksheetFunction.Small(Columns(Columns.Count - 1), k) & _ ":" & WorksheetFunction.Small(Columns(Columns.Count), k))) Next Set myR = Intersect(Rows(2).Resize(Rows.Count - 1), myR) With Intersect(myR, Range("A:H")) .Interior.Color = vbWhite End With With Intersect(myR, Range("A:E")) .Borders(xlInsideHorizontal).LineStyle = xlNone End With With Intersect(myR, Columns("H")) .Borders(xlInsideHorizontal).LineStyle = xlNone End With With Intersect(myR, Range("F:G")) .Borders(xlInsideHorizontal).LineStyle = xlDot End With Columns(Columns.Count - 1).Resize(, 2).ClearContents End Sub

    続きを読む
  • こんな手も 有ります。 縦線は 最初に 引いてください。 外郭線だけ引いてください。 横線は 引かないで下さい。 で 条件付き書式で =A2<>"" として セルが 空白以外のとき セルの上の線を 引くように設定します。データーがはいれば 上の線が引かれます。

    続きを読む
  • 以下でどうなりますか 左表の様に、罫線が引かれているものを変更します Public Sub Samp1()    Dim rng As Range, r As Range    With Range("A1").CurrentRegion       On Error Resume Next       Set rng = .Columns(2).SpecialCells(xlCellTypeBlanks)       On Error GoTo 0       If (Not rng Is Nothing) Then          Application.ScreenUpdating = False          For Each r In rng.Areas             Set r = r.Offset(-1).Resize(r.Count + 1)             With Intersect(r.EntireRow, .Cells)                .Borders(xlInsideHorizontal).LineStyle = xlNone             End With             With r.Offset(, 4).Resize(, 2)                With .Borders(xlInsideHorizontal)                   .LineStyle = xlContinuous                   .Weight = xlHairline                End With             End With          Next          Application.ScreenUpdating = True       End If    End With End Sub

    続きを読む

< 自分のペースで、シフト自由に働ける >

パート・アルバイト(東京都)

この条件の求人をもっと見る

< 平日勤務で週末はリフレッシュしたい人におすすめ >

正社員×土日祝休み(東京都)

求人の検索結果を見る

もっと見る

この質問と関連する質問

    情報収集に関する質問をキーワードで探す

    < いつもと違うしごとも見てみませんか? >

    覆面調査に関する求人(東京都)

    この条件の求人をもっと見る

    Q&A閲覧数ランキング

    カテゴリ: この仕事教えて

    転職エージェント求人数ランキング

    • 1

      続きを見る

    • 2

      続きを見る

    • 3

      続きを見る

    あわせて読みたい
    スタンバイプラスロゴ

    他の質問を探す

    答えが見つからない場合は、質問してみよう!

    Yahoo!知恵袋で質問をする

    ※Yahoo! JAPAN IDが必要です

    スタンバイ アプリでカンタン あなたにあった仕事見つかる