[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『行挿入』(挿入)
教えてください。
[[20040915112925]]『1行毎に行を1行挿入したい』(み)
上記で、夏目雅子似さんのマクロを使用しているのですが
もっと処理速度を早くしたいのですが、どうすればいいでしょうか?
リストは、4〜300ぐらいまで有ります
Application.ScreenUpdating = False で画面の書き換えを止めれば、 その分早くなりますね。 (sato)
Sub 挿入()
Dim MyRow As Long, r As Long
Application.ScreenUpdating = False '画面の書き換えをしない
r = Range("A65536").End(xlUp).Row
For MyRow = r To 1 Step -1
Rows(MyRow).EntireRow.Insert
Next
Application.ScreenUpdating = True '画面の書き換えを再開する
End Sub
作ってみました。
Sub 挿入()
Dim r As Long
Range("B1").EntireColumn.Insert
r = Range("A65536").End(xlUp).Row
Range("B4:B" & r).Formula = "=ROW()"
Range("B" & r + 1 & ":B" & r * 2 - 3).Value = Range("B4:B" & r).Value
Range("4:" & r * 2 - 3).Sort _
Key1:=Range("B1"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
Range("B:B").Delete
End Sub
4行目からでしたね。ちょっとカスタマイズ。
(みやほりん)
値だけでよいなら・・
Sub aaaaaaaa()
Dim x As Variant
Dim y() As Variant
Dim i As Long, s As Long, r As Long
r = 1
With ActiveSheet
x = .Range("A1", .Range("A1").SpecialCells(xlCellTypeLastCell))
ReDim y(UBound(x, 1) * 2, UBound(x, 2))
For i = 1 To UBound(x, 1)
For s = 1 To UBound(x, 2)
y(r, s) = x(i, s)
Next s
r = r + 2
Next i
.Cells.ClearContents
.Range("A1", .Cells(UBound(y, 1), UBound(y, 2))).Value = y
End With
End Sub
(INA)
>Application.ScreenUpdating = False
勉強になりました
みやほりんさんの作っていただいたものは、あっという間でした
INAさんの作っていただいたものは、A列のものがB列に移動してしまいました・・・
何か間違ったやり方をしてしまったのでしょうか?
意味はチンプンカンプンですけど・・・
わかるようになったら楽しいだろうなー
(挿入)
Option Base 1 ' ←が抜けてました。
Sub aaaaaaaa()
:
>意味はチンプンカンプン セルの値を、配列変数に入れながら、 1行分位置をずらして、セルに戻しています。
(INA)
すごく早くて、感動しております!!
(挿入)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.