[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『見出し行』(プリン)
お世話になります。
見よう見まねでコードを書いてみたのですが上手く動きません。
何方か教えて頂けないでしょうか?
表を作る時、ソートを掛けると見出し行が3行あるのでエクセルの
設定では1行までしか設定出来なかったので、見出し行3行を、必ず
7行目に貼り付けるコードです。
エラーコード 91
オブジェクト変数またはwithブロック変数が設定されていません。
Sub test()
Dim myrow As Range
Dim c As Range
myrow = Range("A" & Rows.Count) ’A列の数値をmyrowに入れる
For Each c In myrow ’myrowをc変数に代入
Select Case c
Case Is = 18 ’A列の数値によって選択した3行を7行目挿入 Rows("25:27").Select Selection.Cut Rows("7:7").Select Selection.Insert Shift:=xlDown Case Is = 17 Rows("24:26").Select Selection.Cut Rows("7:7").Select Selection.Insert Shift:=xlDown Case Is = 16 Rows("23:25").Select Selection.Cut Rows("7:7").Select Selection.Insert Shift:=xlDown Case Is = 15 Rows("22:24").Select Selection.Cut Rows("7:7").Select Selection.Insert Shift:=xlDown Case Is = 14 Rows("21:23").Select Selection.Cut Rows("7:7").Select Selection.Insert Shift:=xlDown Case Is = 13 Rows("20:22").Select Selection.Cut Rows("7:7").Select Selection.Insert Shift:=xlDown Case Is = 12 Rows("19:21").Select Selection.Cut Rows("7:7").Select Selection.Insert Shift:=xlDown Case Is = 11 Rows("18:20").Select Selection.Cut Rows("7:7").Select Selection.Insert Shift:=xlDown Case Is = 10 Rows("17:19").Select Selection.Cut Rows("7:7").Select Selection.Insert Shift:=xlDown
End Select
Next c
< 使用 Excel:Excel2007、使用 OS:Windows7 >
いったんコードをアップしたんですが、↓のコメントの通り、要件がよくわからないままの ばあたり的なコードだったので、消去します。
↓でもコメントしていますが
・どんなレイアウトの表があって ・このように並び替えたい ・でも、こういうふうにすると ・こうなってしまう
このように、具体的な説明をしてもらえれば、皆さんから適切な処理案の回答があると思います。 (β) 2015/06/30(火) 18:32
↑ とコメントしましたが、質問文をよく読むと、要件を取り違えているようですね 。 各行のA列の値により処理分岐しているわけですが、どの行であっても、処理すべき行を【固定】で指定していますが それでいいのですか?
実際には、どのセルの値を判定して、どこを、どうしたいのでしょうか?
(β) 2015/06/30(火) 18:37
なんとなくわかってきました。
A列のデータが何行目まであるか(あるいは何行目から始まっているか?)を調べ、 その状況によって、しかるべきところに3行の何かを挿入。
そういうことですか。 それなら、ループの必要は全くありませんが、そのあたりを、もう少し具体的に説明してください。
(β) 2015/06/30(火) 18:40
(デイト) 2015/06/30(火) 18:50
まだよくわかりませんが、10行目から下の領域を、タイトル行なしで並び替えということではだめなのですか? 並び替えはマクロで?手動で?
マクロならそのコードをアップしてください。 手動なら、どこを、どのように指定して並び替えているか手順を教えてください。
(β) 2015/06/30(火) 23:01
>>今まで、手動でやっていたのですが >>出来るならマクロでお願い致します。
その操作をマクロ記録して、生成されるコードで固定領域になっている部分を変数にすればいいのですが 参考までに以下。 (キーが1列なので、2003以前のSortメソッドを使っています。マクロ記録をすると、新しいSortオブジェクトを基本としたコードが生成されますが)
Sub Sample() Dim r As Range
'10行目以降の領域 With ActiveSheet.Range("A1", ActiveSheet.UsedRange) Set r = .Offset(9).Resize(.Rows.Count - 1) End With
r.Sort Key1:=Columns("A"), Order1:=xlAscending, Header:=xlNo
End Sub
ちなみに、今までやっておられた方法での結果を、マクロにすると以下になります。 アップされたオリジナルのコードとの違いも見ていただければよろしいかと。
Sub ちなみに() Dim r As Range
'7行目以降の領域 With ActiveSheet.Range("A1", ActiveSheet.UsedRange) Set r = .Offset(6).Resize(.Rows.Count - 1) End With
r.Sort Key1:=Columns("A"), Order1:=xlAscending, Header:=xlNo
'下に配置されたヘッド部分の移動 Range("A" & Rows.Count).End(xlUp).Offset(1).EntireRow.Resize(3).Cut Rows("7:7").Insert Shift:=xlDown
End Sub
(β) 2015/07/01(水) 06:53
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.