|
お世話になっております、氷室と申します。
VBでの開発経験有ですが、Excel のVBAは初心者です。
VBAを学習し始めて2週間くらいになります。
タイトルの内容で詰まってしまったのでどなたかご教授ください。
Excelのシート(Sheet1、Sheet2)の2枚を持っています。
機能概要はSheet1の内容をSheet2に若干整理して転記します。内容は線表です。
転記の作業は上手く動いてくれているのですが、
Sheet1の、1行目のG列からBG列までに、特定の文字(☆)を二つ書き、
Sheet1からSheet2へ転記する際に、
☆から☆の範囲のみを非表示にする機能を追加しようとしてつまずいています。
<Sheet1>
A B C D E F G H I J K
1 | ☆| |☆ | | |
------------------------------------------------------------------------
2 |8/1|8/2|8/3|8/4|8/5|
------------------------------------------------------------------------
3 項1|項2|項3|項4|項5|項6|
<Sheet2>
A B J K L
1 | | | |
----------------------------------------------------
2 |8/4|8/5|8/6|
----------------------------------------------------
3 項目1|項目2|
上の図の様な作りになる事が目標です。
☆が複数あった場合には初めに見つけた2個までで処理を行います。
G1に☆は必ずつきます、固定です。(A〜Fまでは項目で使用)
※Sheet1には非表示の機能をつけませんが、☆を書くのはSheet1です。
色々考えてみたのですが
Sheet1のG1を(1,7)と書いて、BG列(55列目)までループで処理しようとしました。
☆から☆まではカウントしています。
☆が2つか最後の列(55行目)まで行くとループを抜ける作りです。
実行すると、エラーは起きずどこも非表示にならないまま表示されてしまいます。
問題はいろいろあると思うのですが、Sheet1とSheet2では項目数が変わり、
非表示にする部分がずれてしまうのではないかという点でも煮詰まってしまいました。
(まず非表示から出来てないので、ずれる心配以前の問題ですが。)
追加したソースは下記です。転記する部分のソースを省いています。
------------------------------------------------------
'シート1(PJ)をアクティブにする
Sheet1.Activate
Dim Star As Integer '☆のカウント
Dim S As Integer ’列番号
Dim Zahyou As String ’座標
Star = 0 '☆のカウントリセット
R = "7" '☆検索開始列の指定
While Star = 2 Or R = 55 '55列目までループを行う。
Zahyou = "1," & R 'セル値を指定(行,列)
If Cells(Zahyou).Value = "☆" Then
Star = Star + 1 '☆のカウント。
Sheet2.Activate 'シート2へ非表示をしにいく。
Selection.EntireColumn.Hidden = True '対象列非表示
Sheet1.Activate 'シート1へ戻って処理を続ける。
End If
R = R + 1 '隣のセルへ。
Wend
------------------------------------------------------
これだけで上手く伝わるか分かりませんが、
対象範囲を別シートから検索し、非表示にさせる方法について
教えていただければと思います。
長々と失礼しました、よろしくお願いいたします。
|
|