色彩を教える人になるための講座「色彩講師養成講座」の魅力とは>>

Excelで作ったシートがあり、行方向のセルの高さが記述量に応じて異なっています。これをソートしたいのですが、セルの内容は入れ替わってもセルの設定した高さは変化しないので最後に手作業でいつも修正しています。ソート時にセルの高さも一緒に動くやり方は無いでしょうか?(VBAで出来ないでしょうか?)

gooドクター

A 回答 (4件)

前提条件



見出し行: 1行目3列(A1~C1)
データ行: 2行目以降
キーの列: A列

とした場合、
未使用列(今回は最終列C列の隣、D列使用)に各行の高さを入れておき
ソート後、その値で高さを再設定してもいいですね。
 
'------------------------------------------
Sub Test()
 Dim R As Long
 Dim LastRow As Long
 Dim myRange As Range

 Application.ScreenUpdating = False
 LastRow = Cells(Rows.Count, "A").End(xlUp).Row
 Range("D:D").ClearContents
 For R = 2 To LastRow
   Cells(R, "D").Value = Rows(R).RowHeight
 Next R

 Set myRange = Range("A1", Cells(LastRow, "D"))
 myRange.Sort _
   Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
   OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
   SortMethod:=xlPinYin

 For R = 2 To LastRow
   Rows(R).RowHeight = Cells(R, "D").Value
 Next R
 Range("D:D").ClearContents
 Application.ScreenUpdating = True
End Sub
'--------------------------------------------

 
    • good
    • 0
この回答へのお礼

で、出来ました!!有難うございます。VBA初心者の私としてはrangeオブジェクトを使ったこのやり方はとても難しく、自分では書くことが出来ません。
コメントに書かれていたセルの高さを記入し、後でその値を元にセルの高さを調整する方法は良いですね。もう何ヶ月も考えて、よく分からなかったので投げ出す寸前でした。本当に感謝です。明日から仕事がバリバリ進みそうです。

お礼日時:2009/02/08 15:22

No1です


すみません 投稿する場所を間違えました
m(_ _)m
あとから行の高さを自動調整で対処できないかなぁ
    • good
    • 0

昇順で並べ替えるサンプルマクロです。


使えるかどうか、ダミーのシートでテストしてみてください。

Sub test1()
  Dim i As Long
  Dim j As Long

  For i = 1 To Range("A1:A10").Count
    For j = 1 To Range("A1:A10").Count - 1
      If Range("A1:A10").Item(j).Value > Range("A1:A10").Item(j + 1).Value Then
        Range("A1:A10").Item(j + 1).EntireRow.Cut
        Range("A1:A10").Item(j).EntireRow.Insert Shift:=xlDown
      End If
    Next j
  Next i
End Sub
    • good
    • 0
この回答へのお礼

早速の回答有難うございました。

お礼日時:2009/02/08 15:27

Excelでブラウザでプレビューしたものをコピーして貼り付けるとか


PowerPointで 編集 - 形式を選択して貼り付け - 書式なしテキスト
または、いったんメモ帳に貼り付けてから メモ帳上でもう一度コピーそして貼り付けとか
で対処できませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング