[[20080628142202]] 『条件をつけて列の表示/非表示を自動で』 (I'm at a loss。。。ちえ)  ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件をつけて列の表示/非表示を自動で』 (I'm at a loss。。。ちえ)
 初心者です。はじめて質問させていただきます。よろしくお願い致します。

    A , B , C , D , E
 1:『  』 
 2:品 名,仕入,特価,定価,備考
 3:ばなな,120円,150円,200円,期限○日
 4:みかん,100円,200円,300円,期限×日
 5:ぶどう,200円,350円,500円,期限△日

 A1のセル『  』に
 『1』を入力した時にはE列を非表示にする。
 『2』を入力した時にはB列を非表示にする。
 『3』を入力した時にはB列とC列を非表示にして、表示されてるD列の幅を広くする。

 とゆーようなことはできますか?
 Excelバーションは2002です。
 初心者なので、簡単な方法でできたらうれしいです。
 よろしくお願い致します。

 列全体を非表示なら VBAで
 列の値のみ非表示なら 条件付書式で

列全体を非表示にしたいのですが、
 VBA ・・・ってどのようにしたら良いのでしょうか?
  ほんと初心者で何も分からなくてごめんなさい。

 とゆーようなこと とは こうゆーようなことでせうか?
 そのSheetのシートタブを右クリックしコードの表示を選択します。
 真っ白な画面に下のコードをコピペしませう。
 戻ってA1のセルに『1』等と入力してみてくらはい。
       (弥太郎)
 '--------------------
 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim data As Variant
    If Target.Count > 1 Then Exit Sub
    If Target.Address(0, 0) <> "A1" Then Exit Sub
    Application.ScreenUpdating = False
    With CreateObject("vbscript.regexp")
        data = StrConv(Target, vbNarrow)
        .Pattern = "(\D+)*(\d)(\D+)*"
        If .test(data) Then
            Columns("a:iv").EntireColumn.Hidden = False
            Columns("d:d").ColumnWidth = 8.38
            Select Case .Replace(data, "$2")
                Case 1
                    Columns("e:e").EntireColumn.Hidden = True
                Case 2
                    Columns("b:b").EntireColumn.Hidden = True
                Case 3
                    Columns("b:c").EntireColumn.Hidden = True
                    Columns("d:d").ColumnWidth = 17.5
            End Select
        End If
    End With
    Application.ScreenUpdating = True
 End Sub


>(弥太郎)さん
 早速コピペさせていただきました。
 ありがとうございました!

 m(__)m 。。。ちえ

応用したいのですが・・・

 初心者の私には難しくて、自力ではできそうにありません(;_;)
 どなたか教えていただけませんか?よろしくお願いします。

 A1のセル『  』に
 『0』を入力した時には
  全ての列を表示する(幅は指定なし)。

 『1』を入力した時には
  A,B,C,I,J,K,L,M,O,P,S,U,W の列を
  50,20,30,60,380,65,65,65,65,65,65,65,65 の幅(ピクセル数)で表示する。

 『2』を入力した時には
  A,B,C,I,J,L,M,O,P,S,W,Y の列を
  50,20,30,60,380,65,65,65,65,65,65,155 の幅で表示する。

 『3』を入力した時には
  A,B,C,I,J,L,M,O,P,S,Z の列を
  50,20,30,60,380,65,65,65,65,65,220 の幅で表示する。

 『4』を入力した時には
  A,B,C,I,J,L,M,Z の列を
  50,20,30,60,380,100,100,210 の幅で表示する。

 「初心者には無理だろ!」という難易度であれば諦めます(~_~;)
 よろしくお願いします。

(I'm at a loss。。。ちえ)2008.7.3 16:00


 [御参考]
[[20050308152110]]『条件付書式の条件は3つが限度?』(よよ)
 (dack)

初めてVBAにチャレンジしています。

 (弥太郎)さんに教えていただいたコードをベースに、自分なりにやってみましたが・・・。
 変だな〜と思う所があったら教えて下さい。
 よろしくお願いします。

 '--------------------
 Private Sub Worksheet_Change(ByVal Target As Range)
     Dim data As Variant
     If Target.Count > 1 Then Exit Sub
     If Target.Address(0, 0) <> "A2" Then Exit Sub
     Application.ScreenUpdating = False
     With CreateObject("vbscript.regexp")
         data = StrConv(Target, vbNarrow)
         .Pattern = "(\D+)*(\d)(\D+)*"
         If .test(data) Then
             Columns("a:z").EntireColumn.Hidden = False
             Select Case .Replace(data, "$2")
                 Case 0
                     Columns("a:a").ColumnWidth = 5.00
                     Columns("b:b").ColumnWidth = 1.88
                     Columns("c:c").ColumnWidth = 3.13
                     Columns("d:d").ColumnWidth = 3.75
                     Columns("e:e").ColumnWidth = 14.50
                     Columns("f:g").ColumnWidth = 5.75
                     Columns("h:h").ColumnWidth = 9.00
                     Columns("i:i").ColumnWidth =6.88
                     Columns("j:j").ColumnWidth = 46.88
                     Columns("k:m").ColumnWidth = 7.50
                     Columns("n:n").ColumnWidth = 3.75
                     Columns("o:p").ColumnWidth = 7.50
                     Columns("q:q").ColumnWidth = 3.75
                     Columns("r:s").ColumnWidth = 7.50
                     Columns("t:t").ColumnWidth = 3.75
                     Columns("u:w").ColumnWidth = 7.50
                     Columns("x:x").ColumnWidth = 3.75
                     Columns("y:y").ColumnWidth = 18.75
                     Columns("z:z").ColumnWidth = 38.13
                 Case 1
                     Columns("a:a").ColumnWidth = 5.00
                     Columns("b:b").ColumnWidth = 1.88
                     Columns("c:c").ColumnWidth = 3.13
                     Columns("d:h").EntireColumn.Hidden = True
                     Columns("i:i").ColumnWidth =6.88
                     Columns("j:j").ColumnWidth = 46.88
                     Columns("k:m").ColumnWidth = 7.50
                     Columns("n:n").EntireColumn.Hidden = True
                     Columns("o:p").ColumnWidth = 7.50
                     Columns("q:r").EntireColumn.Hidden = True
                     Columns("s:s").ColumnWidth = 7.50
                     Columns("t:t").EntireColumn.Hidden = True
                     Columns("u:u").ColumnWidth = 7.50
                     Columns("v:v").EntireColumn.Hidden = True
                     Columns("w:w").ColumnWidth = 7.50
                     Columns("x:z").EntireColumn.Hidden = True
                 Case 2
                     Columns("a:a").ColumnWidth = 5.00
                     Columns("b:b").ColumnWidth = 1.88
                     Columns("c:c").ColumnWidth = 3.13
                     Columns("d:h").EntireColumn.Hidden = True
                     Columns("i:i").ColumnWidth =6.88
                     Columns("j:j").ColumnWidth = 46.88
                     Columns("k:k").EntireColumn.Hidden = True
                     Columns("l:m").ColumnWidth = 7.50
                     Columns("n:n").EntireColumn.Hidden = True
                     Columns("o:p").ColumnWidth = 7.50
                     Columns("q:r").EntireColumn.Hidden = True
                     Columns("s:s").ColumnWidth = 7.50
                     Columns("t:v").EntireColumn.Hidden = True
                     Columns("w:w").ColumnWidth = 7.50
                     Columns("x:x").EntireColumn.Hidden = True
                     Columns("y:y").ColumnWidth = 18.75
                     Columns("z:z").EntireColumn.Hidden = True
                 Case 3
                     Columns("a:a").ColumnWidth = 5.00
                     Columns("b:b").ColumnWidth = 1.88
                     Columns("c:c").ColumnWidth = 3.13
                     Columns("d:h").EntireColumn.Hidden = True
                     Columns("i:i").ColumnWidth =6.88
                     Columns("j:j").ColumnWidth = 46.88
                     Columns("k:k").EntireColumn.Hidden = True
                     Columns("l:m").ColumnWidth = 7.50
                     Columns("n:n").EntireColumn.Hidden = True
                     Columns("o:p").ColumnWidth = 7.50
                     Columns("q:r").EntireColumn.Hidden = True
                     Columns("s:s").ColumnWidth = 7.50
                     Columns("t:y").EntireColumn.Hidden = True
                     Columns("z:z").ColumnWidth = 38.13
                 Case 4
                     Columns("a:a").ColumnWidth = 5.00
                     Columns("b:b").ColumnWidth = 1.88
                     Columns("c:c").ColumnWidth = 3.13
                     Columns("d:h").EntireColumn.Hidden = True
                     Columns("i:i").ColumnWidth =6.88
                     Columns("j:j").ColumnWidth = 46.88
                     Columns("k:k").EntireColumn.Hidden = True
                     Columns("l:m").ColumnWidth = 11.88
                     Columns("n:y").EntireColumn.Hidden = True
                     Columns("z:z").ColumnWidth = 38.13
             End Select
         End If
     End With
     Application.ScreenUpdating = True
  End Sub 

 もっと簡単にできる方法があったら教えて下さい。
 よろしくお願いします。
(I'm at a loss。。。ちえ)2008.7.4 10am

 例えば Case 0 の場合なら、こんな書き方もありかと。
 
   Dim col_code As Variant     '上の方で宣言しておく
   Dim col_size As Variant     '上の方で宣言しておく
   Dim i As Integer         '上の方で宣言しておく

 Case 0
   col_code = Split("A,B,C,I,J,K,L,M,O,P,S,U,W", ",")
   col_size = Array(5, 1.88, 3.13, 3.75, 14.5, 5.75, 9, 6.88, 46.88, 7.5, 3.75, 7.5, 3.75, 7.5, 3.75, 7.5, 3.75, 18.75, 38.13)

   For i = LBound(col_code) To UBound(col_code)
      Columns(col_code(i)).ColumnWidth = col_size(i)
   Next i
 
(純丸)(o^-')b

>(純丸)さん

 ありがとうございます。

 色々な方法があるんですね〜。
 たくさんありすぎて初心者の私には何がなんだか・・・(^ー^;

 もっと勉強して使いこなせるように頑張ります!

 (*^_^*)ありがとうございました。

(I'm at a loss。。。ちえ)2008.7.8 9am


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.