Excel VBA質問箱 IV

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

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


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

【30535】抽出された行の判定 makk 05/10/29(土) 17:45 質問[未読]
【30536】Re:抽出された行の判定 かみちゃん 05/10/29(土) 17:54 回答[未読]
【30547】Re:抽出された行の判定 YN62 05/10/30(日) 10:51 質問[未読]
【30548】Re:抽出された行の判定 かみちゃん 05/10/30(日) 11:33 回答[未読]
【30588】Re:抽出された行の判定 makk 05/10/31(月) 15:09 質問[未読]
【30610】Re:抽出された行の判定 かみちゃん 05/10/31(月) 22:55 発言[未読]

【30535】抽出された行の判定
質問  makk  - 05/10/29(土) 17:45 -

引用なし
パスワード
   いつもお世話になっています。makkと申します。
さて、フィルターで抽出された行に対して、あるセルに
一斉に値を代入しようとしています。
この際、その行(或いはセル)が、可視か否かを判別することはできるでしょうか。
或いは、フィルター下行に対して、一斉にコントロールするコマンドがあるのでしょうか。
ご教授よろしくお願いいたします。

【30536】Re:抽出された行の判定
回答  かみちゃん  - 05/10/29(土) 17:54 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>さて、フィルターで抽出された行に対して、あるセルに
>一斉に値を代入しようとしています。
>この際、その行(或いはセル)が、可視か否かを判別することはできるでしょうか。

こんな感じでできるかと思います。

Sub Macro1()
  With Range("A1").CurrentRegion
   .AutoFilter Field:=1, Criteria1:="2"
   '可視セルを選択する。
   .SpecialCells(xlCellTypeVisible).Select
   .SpecialCells(xlCellTypeVisible).Offset(, 1).Value = "*"
  End With
End Sub

【30547】Re:抽出された行の判定
質問  YN62  - 05/10/30(日) 10:51 -

引用なし
パスワード
   ▼かみちゃん さん:

いつもお世話になります。
すみません、が。
一寸お聞きしたいのですが。
SpecialCells(xlCellTypeVisible)に関して勉強させていただきました。

ただA1やB1がそれぞれ項目1、項目2の場合
C1にもD1にも「*」が入ります
また2行以降にもCとD列に「*」マークが並びますが
Cの2行目から下に一列だけ「*」マークを入れることは
出来ないでしょうか。
色々とトライしましたが出来ませんでしたので
教えていただきたくお願いします。

>こんにちは。かみちゃん です。
>
>>さて、フィルターで抽出された行に対して、あるセルに
>>一斉に値を代入しようとしています。
>>この際、その行(或いはセル)が、可視か否かを判別することはできるでしょうか。
>
>こんな感じでできるかと思います。
>
>Sub Macro1()
>  With Range("A1").CurrentRegion
>   .AutoFilter Field:=1, Criteria1:="2"
>   '可視セルを選択する。
>   .SpecialCells(xlCellTypeVisible).Select
>   .SpecialCells(xlCellTypeVisible).Offset(, 1).Value = "*"
>  End With
>End Sub

【30548】Re:抽出された行の判定
回答  かみちゃん  - 05/10/30(日) 11:33 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ただA1やB1がそれぞれ項目1、項目2の場合
>C1にもD1にも「*」が入ります
>また2行以降にもCとD列に「*」マークが並びますが
>Cの2行目から下に一列だけ「*」マークを入れることは
>出来ないでしょうか。

私が提示したコードは、SpecialCells(xlCellTypeVisible)を使った一例にしかすぎません。
オートフィルタを実行するシートの内容なども書かれていませんでしたので、
YN62さんの疑問は、当然起こり得ます。
そこで、以下のようにすれば、対応できるかと思います。

Sub Macro1()
  With Range("A1").CurrentRegion
   .AutoFilter Field:=1, Criteria1:="2"
   '可視セルを選択する。
   .SpecialCells(xlCellTypeVisible).Select
   .SpecialCells(xlCellTypeVisible).Offset(, .Columns.Count).Value = "*"
   Range(Columns(.Columns.Count + 2), Columns(.Columns.Count * 2)).Delete
   Cells(1, .Columns.Count + 1).ClearContents
  End With
End Sub

もう少し考えれば、スマートな方法があるかと思いますが、とりあえず、YN62さん
の要件にしたがって、動作確認はできているので、提示させていただきます。

【30588】Re:抽出された行の判定
質問  makk  - 05/10/31(月) 15:09 -

引用なし
パスワード
   ▼かみちゃん さん:
>私が提示したコードは、SpecialCells(xlCellTypeVisible)を使った一例にしかすぎません。
>オートフィルタを実行するシートの内容なども書かれていませんでしたので、
>YN62さんの疑問は、当然起こり得ます。
>そこで、以下のようにすれば、対応できるかと思います。
>
>Sub Macro1()
>  With Range("A1").CurrentRegion
>   .AutoFilter Field:=1, Criteria1:="2"
>   '可視セルを選択する。
>   .SpecialCells(xlCellTypeVisible).Select
>   .SpecialCells(xlCellTypeVisible).Offset(, .Columns.Count).Value = "*"
>   Range(Columns(.Columns.Count + 2), Columns(.Columns.Count * 2)).Delete
>   Cells(1, .Columns.Count + 1).ClearContents
>  End With
>End Sub
>
かみちゃんさんありがとうございます。
今ひとつ、各コマンドとパラメータが理解できていないですが・・・。

ところで、私の場合、抽出した行のある列だけに。マークを入れたいのですが
どうすればよいのでしょうか。
参考文献などもありましたら、ご教授ください。
よろしくお願いします。

【30610】Re:抽出された行の判定
発言  かみちゃん  - 05/10/31(月) 22:55 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ところで、私の場合、抽出した行のある列だけに。マークを入れたいのですが
>どうすればよいのでしょうか。

最初のご質問からして思うのですが、質問があまりにも抽象的ですので、具体的
なアドバイスができません。
現時点で言えることは、以下の2行の .Columns.Count で表示したい列を調整し
てくださいということです。

.SpecialCells(xlCellTypeVisible).Offset(, .Columns.Count).Value = "*"  Range(Columns(.Columns.Count + 2), Columns(.Columns.Count * 2)).Delete

>参考文献などもありましたら、ご教授ください。

とりあえず、VBAヘルプは参照してみてください。

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