[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロを教えてください』(名無し)
マクロの記録を使用して
シート1のリストから、フィルタをかけ必要なセルを選択し
シート2に張り付ける。
という記録を作りましたが、(すみません。会社のPCで作ったファイルなので持ち出せないのでマクロを載せられません)
アドバイスが、ほしいことは
1.シート2のA行にシート1から移動してきた対象データに連番がつくようにしたいです。
2.シート2にシート1から移動してきた対象データ部分に枠線が作成されるようにしたいです。
よろしくお願いいたします。
< 使用 Excel:unknown、使用 OS:unknown >
様々な方法があると思いますが一例で
単に番号ふって罫線引くだけなら。。。 ^^
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
(隠居じーさん) 2018/08/10(金) 22:14
何がわからないのか、わからないですが、「3ついっぺんに動かす〜」ってところであれば、
それなら
sub test() call 1番目のマクロ call 2番目のマクロ call 3番目のマクロ end sub
としたらどうでしょうか?
(もこな2) 2018/08/10(金) 22:42
とりあえず、
・シート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.