|
例えば、これ↓
>Range("A2:BP2").Select
>Range(Selection, Selection.End(xlDown)).Select
この書き方なんですが、前にもどこかで質問者が書いているのを見かけたことがあるんですが、何でこんな書き方をするのか解りませんでした。
データ状態によって、下記コードのようになってしまいますよ。
1度、新規シートで、実行してみてください。
Sub abcd1()
Range("A2:N15").Value = 5
Range("A11:A15").Value = Empty
Range("A2:N2").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub
Sub abcd2()
Range("A2:N15").Value = 5
Range("M16:M20").Value = 5
Range("A2:N2").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub
・書式もフィルするから、必要なかったら後で書式を修正する手間が要ります。
でも、連番の作成は1番早いです。
> Range("B65536").Select
> Selection.End(xlUp).Select
> 最大行 = ActiveCell.Row
> Range("a2").Select
> If 最大行 = 1 Then
> Else
> For k = 2 To 最大行
> Cells(k, 1).Value = k - 1
> Next
> End If
↓
最大行 = Range("B65536").End(xlUp).Row
If 最大行 <> 1 Then
With Range("B2") '←スタート位置
With .Resize(最大行 - .Row + 1).Offset(, -1)
.Cells(1).Value = 1
.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
Step:=1, Trend:=False
End With
End With
End If
・オートフィルター使用時は、マクロ記録をそのまま使用せずに
範囲がB2:AA2だったら、左端の始点セルを指定しておく
また、いちいちシートを選択しなくてもできます。
> Sheets("サンプルリスト").Select
> Selection.AutoFilter Field:=68, Criteria1:=項目コード
↓
Sheets("サンプルリスト").Range("B2").AutoFilter Field:=68, Criteria1:=項目コード
↑例えばだけど....。
・↓を修正しようと思いましたが、何でエラートラップしてあるのでしょうか?
この辺は、上記したことが判明しないと修正できませんけど
なんとなく、データ量が多すぎる、SpecialCells(コードには書いてないけど)の最大認識数に
関係しているのかな?と思います。
> Range("B2:BP2").Select
> On Error GoTo tugi
> Range(Selection, Selection.End(xlDown)).Select
> Selection.Copy
> On Error GoTo tugi
なんか課題が多いようですから、少しづつ修正していくほかないような気もします。
これなんか選択しなくてもできますよ。
> Worksheets(Array(i)).Select
> Range("B2").Select
> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
> :=False, Transpose:=False
↓
Worksheets(Array(i)).Range("B2").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
|
|