Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9066 / 13644 ツリー ←次へ | 前へ→

【29438】非表示もある表のソート らいもん 05/10/4(火) 23:48 質問[未読]
【29442】Re:非表示もある表のソート Komo 05/10/5(水) 7:08 発言[未読]
【29474】Re:非表示もある表のソート らいもん 05/10/6(木) 0:11 お礼[未読]
【29444】Re:非表示もある表のソート awu 05/10/5(水) 10:17 回答[未読]
【29476】Re:非表示もある表のソート らいもん 05/10/6(木) 0:32 お礼[未読]
【29479】Re:非表示もある表のソート awu 05/10/6(木) 1:37 回答[未読]
【29531】Re:非表示もある表のソート らいもん 05/10/7(金) 0:09 お礼[未読]

【29438】非表示もある表のソート
質問  らいもん  - 05/10/4(火) 23:48 -

引用なし
パスワード
   非表示にしてある部分をそのまま非表示にしながらも、
昇降順に並べ替えることをVBAで指定する方法ってありますか?
非表示にするのは、行単位ですがつながった行ではなく、
とびとび(統一性なし)で、日付や時間なども含まれていません。
なにか非表示のものとわかるような記号なりを入れれば簡単にできるのでしょうが、もしも他に方法があれば教えていただけませんか。よろしくお願いします。

【29442】Re:非表示もある表のソート
発言  Komo  - 05/10/5(水) 7:08 -

引用なし
パスワード
   ▼らいもん さん:
おはようございます。
非表示の行があっても、普通に昇順にすることは出来ますが。
ただ昇順の列が非表示の状態でも連続して文字または数字など
があることが前提ですが・・・


>非表示にしてある部分をそのまま非表示にしながらも、
>昇降順に並べ替えることをVBAで指定する方法ってありますか?
>非表示にするのは、行単位ですがつながった行ではなく、
>とびとび(統一性なし)で、日付や時間なども含まれていません。
>なにか非表示のものとわかるような記号なりを入れれば簡単にできるのでしょうが、もしも他に方法があれば教えていただけませんか。よろしくお願いします。

【29444】Re:非表示もある表のソート
回答  awu  - 05/10/5(水) 10:17 -

引用なし
パスワード
   ▼らいもん さん:
>非表示にしてある部分をそのまま非表示にしながらも、
>昇降順に並べ替えることをVBAで指定する方法ってありますか?

たぶん、「非表示の行も並べ替えの対象にする」ということだと思いますが、
VBAで処理するのであれば、作業列を意識せず使用出来ますので、

例えば、仮に右端列を使うとして、こんな感じでは如何でしょうか。


Sub 非表示行含め並べ替え()
Dim Rw As Long
Dim N As Long
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
  Rw = .Cells(.Rows.Count, 1).Row
End With
Columns("IV").Delete
For N = 1 To Rw
  If Rows(N).Hidden Then Range("IV" & N).Value = "H"
Next N
Rows("1:" & Rw).Hidden = False
'----ここへ並べ替えのコードを記述 ( ↓は例 ) ----------------------
Cells.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'---------------------------------------------------------------------
For N = 1 To Rw
  If Range("IV" & N).Value = "H" Then Rows(N).Hidden = True
Next N
Columns("IV").Delete
Application.ScreenUpdating = True
End Sub

【29474】Re:非表示もある表のソート
お礼  らいもん  - 05/10/6(木) 0:11 -

引用なし
パスワード
   朝から返答いただいて、ありがとうございました。
簡単な表で今ためして見たのですが確かに、非表示とか
関係なかったですね。失礼しました。
ということは、使用したかった表でなぜ普通に昇降順にしようとしたときに
エラーが起きたのか?ということを解明しないとすすまないですね。
これってVBAを使う以前のエクセルスキルの問題ですよね。
お騒がせしました。どんなエラーかもう一度確認してみます。

【29476】Re:非表示もある表のソート
お礼  らいもん  - 05/10/6(木) 0:32 -

引用なし
パスワード
   ご回答ありがとうございました。
awuさんの前に回答をいただいたkomoさんにもお返事させて
いただいたのですが、非表示があっても普通に昇降順に並べ替えることは
可能でした。わざわざ考えていただいたのに申し訳ありません。
ただ、その並べ替えをしたかった表はなぜかエラーがでてしまったため、
てっきり非表示のせいだと思いこんでしまったようです。
もう一度エラーの内容を確認して、それでもだめだったら
教えていただいたVBAをためしてみようと思います。
(非表示部分も一緒に並べ替えるのはよくよく考えたら必要な気もしますし・・)

まだ、VBAは初心者なため、何箇所かわからない部分があったので、
迷惑ついでに教えていただけますか?

>Columns("IV").Delete

「一番最後の列を消去」ですよね、2回出てきましたが、
なんのために必要なのですか?

>  If Rows(N).Hidden Then Range("IV" & N).Value = "H"

 この中の Hidden の意味を教えてください

以上の2点です。基本的な質問かもしれませんがよろしくお願いします。

【29479】Re:非表示もある表のソート
回答  awu  - 05/10/6(木) 1:37 -

引用なし
パスワード
   非表示行があっても並べ替えできるのは、当然のことですので、質問の意図は、
このようなことではないかと推測しましたが・・・

そのコードとエラー内容を提示した方が、早く解決したような・・・

>>Columns("IV").Delete
>「一番最後の列を消去」ですよね、2回出てきましたが、
> なんのために必要なのですか?

非表示行に印しを付けるのに、もし何か記入されていればマズイので列削除し、
印しを付けたあと、非表示を解除して並べ替えを実行後、印しを付けた行を
非表示にして、もう印しは必要ないのでその列を削除しています。

>>  If Rows(N).Hidden Then Range("IV" & N).Value = "H"

> この中の Hidden の意味を教えてください

あれっ! 行非表示とか並べ替えは、VBAで処理されていたのではなかったのですか?

Hiddenプロパティです。 True の場合、行(または列)が非表示です。

ヘルプで調べてください。 今回のは、「Range オブジェクトに指定した場合」です。

意味は、もしN行が非表示の場合、その行の右端列に"H"を記入する というコードです。

【29531】Re:非表示もある表のソート
お礼  らいもん  - 05/10/7(金) 0:09 -

引用なし
パスワード
   丁寧な回答ありがとうございました。
とてもよくわかりました。
会社のエクセルのヘルプではさっぱり意味がわからず、
本などを参照してVBAを作成していたため、Hiddenプロパティは
初めて知りました。
問題の内容はともかく聞けてよかったです。
ありがとうございました。
恥ずかしながら、エラーの原因は「セルの結合」でした。・・

9066 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free