[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件をつけて列の表示/非表示を自動で』 (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)
(弥太郎)さんに教えていただいたコードをベースに、自分なりにやってみましたが・・・。 変だな〜と思う所があったら教えて下さい。 よろしくお願いします。
'--------------------
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.