[[20180810192100]] 『マクロを教えてください』(名無し) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロを教えてください』(名無し)

マクロの記録を使用して
シート1のリストから、フィルタをかけ必要なセルを選択し
シート2に張り付ける。

という記録を作りましたが、(すみません。会社のPCで作ったファイルなので持ち出せないのでマクロを載せられません)

アドバイスが、ほしいことは

1.シート2のA行にシート1から移動してきた対象データに連番がつくようにしたいです。

2.シート2にシート1から移動してきた対象データ部分に枠線が作成されるようにしたいです。

よろしくお願いいたします。

< 使用 Excel:unknown、使用 OS:unknown >


記録の使い方がわかるなら、
やりたい事をそれぞれ個別にマクロ記録して、
3ついっぺんに動かせば出来ると思います
(ゆ) 2018/08/10(金) 20:17

すみませんがそのやり方がわからないので質問しております。
(名無し) 2018/08/10(金) 21:11

 様々な方法があると思いますが一例で
単に番号ふって罫線引くだけなら。。。 ^^
Option Explicit
Sub main()
    Dim i As Long, r As Range
    With Worksheets("Sheet2")
        Set r = .Range("A1").CurrentRegion
        For i = 2 To r.Rows.Count
            r(i, 1) = i - 1
        Next
        r.Borders.LineStyle = xlContinuous
    End With
End Sub
でも
外してましたらお許しを A^^; m(__)m
(隠居じーさん) 2018/08/10(金) 22:09

追伸 ^^
>> < 使用 Excel:unknown、使用 OS:unknown >
なので
うごくか、わかりません
明示されることをお勧めします。
でわ

(隠居じーさん) 2018/08/10(金) 22:14


>すみませんがそのやり方がわからないので質問しております。
「マクロの記録」がわかららないってことですかね?
でも、
>マクロの記録を使用して
って仰ってるからそうじゃないですよね・・・

何がわからないのか、わからないですが、「3ついっぺんに動かす〜」ってところであれば、
それなら

 sub test()
  call 1番目のマクロ
  call 2番目のマクロ
  call 3番目のマクロ
 end sub

としたらどうでしょうか?

(もこな2) 2018/08/10(金) 22:42


隠居じーさん様
ありがとうございます!
今会社ではなくて、ExcelのバージョンとOS不明記ですみません!
(名無し) 2018/08/10(金) 23:16

もこな2様
ありがとうございます!
アドバイスの通り、「3ついっぺんに動かす〜」ってところです!
言葉が足らずすみません
(名無し) 2018/08/10(金) 23:18

>会社のPCで作ったファイルなので持ち出せないのでマクロを載せられません
家のパソコンにExcelが入っていたり、ネットカフェなんかでちょっと試してみる気はないですかね。

とりあえず、

 ・シート1のデータはA1セルから入っている
 ・オートフィルタかけて必要な行を抽出したら、抽出したものを全部コピー
  (抽出したもののうち一部の列とかではないこと)
 ・貼付け先はシート2のB1セル
 ・貼り付け後にB列の最終行を求めて、A列に連続番号を付与
 ・シート2のA1セルに「No.」と入力
 ・シート2のA1を選択して「Ctrl」+「*」を押して選択される表範囲に罫線を設定

という操作を手動でやりつつ、「マクロの記録」でExcel君に仮のコードを書いてもらい、加工するとこんな感じになりませんか?

    Sub Sample()
        Dim i As Long

        With Worksheets("シート1")
            .AutoFilterMode = False
            .Range("A1").AutoFilter Field:=1, Criteria1:="あああ"

            '【1】抽出したデータを「シート2」にコピーする
            .Range("A1").CurrentRegion.Copy Worksheets("シート2").Range("B1")
        End With

        With Worksheets("シート2")
            i = .Cells(.Rows.Count, "B").End(xlUp).Row

            '貼り付けた表の最終行が1行目=項目だけ=抽出されたデータがない
            'なので以降の処理はしない。
            If i = 1 Then Exit Sub

            '【2】A列に連番を付与する
            With .Range("A2")
                .Value = 1
                .AutoFill Destination:=.Resize(i - 1), Type:=xlFillSeries
            End With

            '【3】表範囲に格子状の罫線を設定する
            With .Range("A1")
                .Value = "No."
                .CurrentRegion.Borders.LineStyle = xlContinuous
            End With
        End With
    End Sub

(もこな2) 2018/08/11(土) 15:19


わかりやすくするために
マクロ記録のようにオブジェクト式のみで書きました。

Sub マクロ()

    Dim シート1 As Worksheet, シート2 As Worksheet, Lr As Long
    Set シート1 = ThisWorkbook.Sheets("Sheet1")
    Set シート2 = ThisWorkbook.Sheets("Sheet2")

    シート1.Range("A1").AutoFilter Field:=絞る列番号, Criteria1:=絞る文字列
    シート2.Cells.Clear
    シート1.Range("A1").CurrentRegion.Copy シート2.Range("A1")
    シート1.Range("A1").AutoFilter
    Lr = シート2.Range("A1").End(xlDown).Row
    シート2.Columns(1).Insert
    シート2.Range("A2") = 1
    シート2.Range("A2").AutoFill シート2.Range("A2").Resize(Lr - 1, 1), xlFillSeries
    シート2.Range("A1").CurrentRegion.Borders.LineStyle = True
End Sub

上から順番にやっている事を日本語にすると

  シート1にオートフィルタをかけて絞る。
  シート2を初期化する。(まっさらにする)
  絞ったデータをコピーして、シート2に貼り付ける。
  シート1のオートフィルタを外しておく。
  シート2の最終行を変数に入れておく。
  シート2にA列を挿入する。(連番入れる用の列)
  シート2のA2に、数字の 1 を入力する。
  それを最終行までオートフィルして連番を作成する。
  シート2のデータがある範囲に罫線をつける。

以上です。
分からないことあれば聞いてください。
(TAKA) 2018/08/18(土) 11:41


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.