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 |
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 : : として下さい。 |
▼BOTTA さん: 早速の回答ありがとうございます。 教えていただいたように、書き換えてみたのですが。。。 1.まず、実行ボタンはSheet2に作成したいのです。(表はSheet1です。) 先ほどので実行を押すと表がSheet2に作成されてしまいました。 それから、作成された表がちょっと違うようになってしまいました。 私がやりたいのは以下のようなことです。 最初に下のような表をSheet1に作成してあります。 ┌――――┬――┬――┬――┬――┐ │番号名前│年齢│住所│電話│備考│ ├――――┼――┼――┼――┼――┤ │○○○○│□□│△△│××│☆☆│ └――――┴――┴――┴――┴――┘ 実際に作成したいものは、もう少し複雑で項目によっては 数列を使用する場合もあります。 自動記録させたマクロでは、AB列の部分が番号名前の部分です。 ですから、縦線はC列とE列の両側に引きました。 そして、Sheet2のA1に数字をランダムに入力して。隣に設置する 実行ボタンをクリックします。 すると、入力した分(実際には入力した数字-1)だけ2行目のような 罫線の行(空の状態)が増えるというようにしたいのです。 教えていただいたコードをコピペして修正したのですが、 できたものは、C列の右側の線とE列の左側の線が無くなって いました。 行間の線も消えてしまいましたが、これは最初の自動マクロの 際に上の線は引いてなかったせいだと思います。 説明がわかりにくいと思うのですが、どうぞよろしくお願いいたします。 |
こちらで検証した限り、現在のコードの一部を修正しただけでは うまく動かないみたいです。 以下のコードをお試しください。 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 |
▼ポンタ さん: 回答ありがとうございます。 試してみました。 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 |
提示されたコードはよく見てませんが、 これでどうでしょう? 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 |
▼ポンタ さん: >提示されたコードはよく見てませんが、 >これでどうでしょう ありがとうございます。(^^ゞ 今度は、AB列間の縦線が消えています。 先ほどのコードと今回のコードを使って、応用版にチャレンジしてみます。 あと、BOTTAさんへの質問にも書いたのですが 行数を入力するA1があるSheet2に実行ボタンを置き 表はSheet1に作成したいという場合はどのようにすればよいのでしょうか? お教えください。 何度もすみませんが、よろしくお願いいたします。m(_ _)m |
mumumuさん、こんにちは。 検証もせずにごめんなさい。 ポンタさん、ありがとうございます。 Sheet1.Activate を上のコードの4行目にでも追加して下さい。 といいながら、またまた検証してない。^_^; |
▼BOTTA さん: >mumumuさん、こんにちは。 >検証もせずにごめんなさい。 そんなそんな。。。^^; 助かりました。 くだらない質問だったと思うのですが、回答していただいて 本当に嬉しかったです。 さっきの1行を追加したら、ちゃんとSheet1に作成されました。(●⌒∇⌒●) お二人とも本当にありがとうございました。m(_ _)m また、よろしくお願いいたします。 |