過去ログ

                                Page     587
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼入力した数字分の行数だけ罫線を引くには?  mumumu 03/1/22(水) 11:23
   ┣Re:入力した数字分の行数だけ罫線を引くには?  BOTTA 03/1/22(水) 12:40
   ┃  ┗Re:入力した数字分の行数だけ罫線を引くに...  mumumu 03/1/22(水) 13:38
   ┗Re:入力した数字分の行数だけ罫線を引くに...  ポンタ 03/1/22(水) 13:18
      ┗Re:入力した数字分の行数だけ罫線を引くに...  mumumu 03/1/22(水) 13:50
         ┗Re:入力した数字分の行数だけ罫線を引くに...  ポンタ 03/1/22(水) 14:08
            ┗Re:入力した数字分の行数だけ罫線を引くに...  mumumu 03/1/22(水) 14:32
               ┗Re:入力した数字分の行数だけ罫線を引くに...  BOTTA 03/1/22(水) 14:49
                  ┗Re:入力した数字分の行数だけ罫線を引くに...  mumumu 03/1/22(水) 14:57

 ───────────────────────────────────────
 ■題名 : 入力した数字分の行数だけ罫線を引くには?
 ■名前 : mumumu <mumumu@wa-o.net>
 ■日付 : 03/1/22(水) 11:23
 -------------------------------------------------------------------------
   久々に教えていただきたくて、投稿させてもらいます。
簡単な質問なのですが、教えてください。
よろしくお願いいたします。

罫線を引く作業をマクロの自動記録で以下のように作成しました。
これを、別シートのあるセルに入れた数字の分だけの行数作成したいのですが
どうすればいいでしょうか?
Sheet1に表を作成します。
Sheet2のA1に数字を入力し、「実行」等のボタンを作成しておき
たとえば、10と入力して実行ボタンをクリックすると
10行の表ができるようにしたいのです。

  Range("A13:F13").Select
  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  Selection.Borders(xlEdgeTop).LineStyle = xlNone
  With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  Selection.Borders(xlInsideVertical).LineStyle = xlNone
  Range("C13,E13").Select
  Range("E13").Activate
  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  Selection.Borders(xlEdgeTop).LineStyle = xlNone
  With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
End Sub
 ───────────────────────────────────────  ■題名 : Re:入力した数字分の行数だけ罫線を引くには?  ■名前 : BOTTA  ■日付 : 03/1/22(水) 12:40  -------------------------------------------------------------------------
   mumumuさん、こんにちは。
Dim myRows As Long
  myRows = Worksheets("Sheet2").Range("A1").Value - 1 '行数取得
  'Range("A13:F13").Select これを↓に
  Range("A13", Range("F13").Offset(myRows)).Select
      :
      :
  'Range("C13,E13").Select これを↓に
  Range("C13", Range("E13").Offset(myRows)).Select
      :
      :
として下さい。
 ───────────────────────────────────────  ■題名 : Re:入力した数字分の行数だけ罫線を引くに...  ■名前 : mumumu <mumumu@wa-o.net>  ■日付 : 03/1/22(水) 13:38  -------------------------------------------------------------------------
   ▼BOTTA さん:
早速の回答ありがとうございます。
教えていただいたように、書き換えてみたのですが。。。

1.まず、実行ボタンはSheet2に作成したいのです。(表はSheet1です。)
 先ほどので実行を押すと表がSheet2に作成されてしまいました。

それから、作成された表がちょっと違うようになってしまいました。
私がやりたいのは以下のようなことです。
最初に下のような表をSheet1に作成してあります。
┌――――┬――┬――┬――┬――┐
│番号名前│年齢│住所│電話│備考│    
├――――┼――┼――┼――┼――┤        
│○○○○│□□│△△│××│☆☆│
└――――┴――┴――┴――┴――┘    
実際に作成したいものは、もう少し複雑で項目によっては
数列を使用する場合もあります。
自動記録させたマクロでは、AB列の部分が番号名前の部分です。
ですから、縦線はC列とE列の両側に引きました。

そして、Sheet2のA1に数字をランダムに入力して。隣に設置する
実行ボタンをクリックします。
すると、入力した分(実際には入力した数字-1)だけ2行目のような
罫線の行(空の状態)が増えるというようにしたいのです。

教えていただいたコードをコピペして修正したのですが、
できたものは、C列の右側の線とE列の左側の線が無くなって
いました。
行間の線も消えてしまいましたが、これは最初の自動マクロの
際に上の線は引いてなかったせいだと思います。

説明がわかりにくいと思うのですが、どうぞよろしくお願いいたします。    
 ───────────────────────────────────────  ■題名 : Re:入力した数字分の行数だけ罫線を引くに...  ■名前 : ポンタ  ■日付 : 03/1/22(水) 13:18  -------------------------------------------------------------------------
   こちらで検証した限り、現在のコードの一部を修正しただけでは
うまく動かないみたいです。

以下のコードをお試しください。

Sub test()
  Dim MyRow As Long
  Dim MyRange As Range
  If Val(Sheet2.Range("A1").Value) < 1 Then Exit Sub
  With Range("A:F")
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
  End With
  MyRow = Sheet2.Range("A1").Value + 12
  Set MyRange = Range("A13:F" & MyRow)
  Call MyRange.BorderAround(xlContinuous, xlThin, xlAutomatic)
  MyRange.Borders(xlInsideVertical).LineStyle = xlContinuous
  MyRange.Borders(xlInsideHorizontal).LineStyle = xlContinuous
End Sub
 ───────────────────────────────────────  ■題名 : Re:入力した数字分の行数だけ罫線を引くに...  ■名前 : mumumu <mumumu@wa-o.net>  ■日付 : 03/1/22(水) 13:50  -------------------------------------------------------------------------
   ▼ポンタ さん:

回答ありがとうございます。
試してみました。
BOTTAさんへの2回目の質問と行き違いになってしまったのですが。。。
書きましたように、項目によっては縦罫線を入れたくない場合も
あるのです。
私が書かせたコードでは、A列とB列の間の縦線はありません。
ポンタさんのコードを使わせていただいたところ
すべての列間に縦線が引かれてしまいました。

例はとりあえず簡単にしてみたのですが、実際に作成したい表の
罫線を自動記録させたものをそのまま載せて見ます。

Sub 表作成()

  Range("B2:R2").Select
  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  Selection.Borders(xlInsideVertical).LineStyle = xlNone
  Range("C2,E2,I2:K2").Select
  Range("I2").Activate
  ActiveWindow.SmallScroll ToRight:=5
  Range("C2,E2,I2:K2,O2:Q2").Select
  Range("O2").Activate
  ActiveWindow.ScrollColumn = 1
  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
  Selection.Borders(xlInsideVertical).LineStyle = xlNone
End Sub
 ───────────────────────────────────────  ■題名 : Re:入力した数字分の行数だけ罫線を引くに...  ■名前 : ポンタ  ■日付 : 03/1/22(水) 14:08  -------------------------------------------------------------------------
   提示されたコードはよく見てませんが、
これでどうでしょう?

Sub test()
  Dim MyRow As Long
  Dim MyRange As Range
  If Val(Sheet2.Range("A1").Value) < 1 Then Exit Sub
  With Range("A:F")
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
  End With
  MyRow = Sheet2.Range("A1").Value + 12
  Set MyRange = Range("A13:F" & MyRow)
  Call MyRange.BorderAround(xlContinuous, xlThin, xlAutomatic)
  MyRange.Borders(xlInsideVertical).LineStyle = xlContinuous
  MyRange.Borders(xlInsideHorizontal).LineStyle = xlContinuous
  Range("A13:A" & MyRow).Borders(xlEdgeRight).LineStyle = xlNone
End Sub
 ───────────────────────────────────────  ■題名 : Re:入力した数字分の行数だけ罫線を引くに...  ■名前 : mumumu <mumumu@wa-o.net>  ■日付 : 03/1/22(水) 14:32  -------------------------------------------------------------------------
   ▼ポンタ さん:
>提示されたコードはよく見てませんが、
>これでどうでしょう

ありがとうございます。(^^ゞ
今度は、AB列間の縦線が消えています。
先ほどのコードと今回のコードを使って、応用版にチャレンジしてみます。

あと、BOTTAさんへの質問にも書いたのですが
行数を入力するA1があるSheet2に実行ボタンを置き
表はSheet1に作成したいという場合はどのようにすればよいのでしょうか?

お教えください。
何度もすみませんが、よろしくお願いいたします。m(_ _)m
 ───────────────────────────────────────  ■題名 : Re:入力した数字分の行数だけ罫線を引くに...  ■名前 : BOTTA  ■日付 : 03/1/22(水) 14:49  -------------------------------------------------------------------------
   mumumuさん、こんにちは。
検証もせずにごめんなさい。

ポンタさん、ありがとうございます。

  Sheet1.Activate
を上のコードの4行目にでも追加して下さい。

といいながら、またまた検証してない。^_^;
 ───────────────────────────────────────  ■題名 : Re:入力した数字分の行数だけ罫線を引くに...  ■名前 : mumumu <mumumu@wa-o.net>  ■日付 : 03/1/22(水) 14:57  -------------------------------------------------------------------------
   ▼BOTTA さん:
>mumumuさん、こんにちは。
>検証もせずにごめんなさい。

そんなそんな。。。^^;
助かりました。
くだらない質問だったと思うのですが、回答していただいて
本当に嬉しかったです。

さっきの1行を追加したら、ちゃんとSheet1に作成されました。(●⌒∇⌒●)

お二人とも本当にありがとうございました。m(_ _)m
また、よろしくお願いいたします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 587