質問: エクセルvbaでセルに入力された特定の文字以外の列を非表示にしたいのですが エクセルで、例えば下記のようにセルに表示されている状態(厳密には、数式で他のセルから引用してきた値)において、「みかん」と表示されている列以外を非表示としたいです。 < 例 > 列a1「みかん」・列b1「りんご」・列c1「バナナ」・列d1「みかん」・列e1「みかん」・ 列f1「りんご」・列g1「メロン」・列h1「バナナ」・列i1「みかん」・列j1「もも」...。 これをvbaを利用して、「みかん」の列、列a,列d,列e,列i以外を非表示にするような方法が あれば、教えてください。 運用としては、それぞれのセルに入る果物の名称が変わっても、毎回「みかん」以外は非表示と することが希望です。よろしくお願いいたします。
回答: ちょっと離れていました。 >空白のセル(例えば、aa1から右側のセルには何も入力されていない)は表示されたままとしておきたい 何度も修正してしまって分かり難くなってしまったかも知れませんので 変数を増やし書き替えますね。 sub sample() dim i as long, lastcol as long dim myrng as range application.screenupdating = false with activesheet .cells.columns.hidden = false lastcol = .cells(1, columns.count).end(xltoleft).column for i = 1 to lastcol if .cells(1, i).text = "みかん" then if myrng is nothing then set myrng = .cells(1, i) else set myrng = union(myrng, .cells(1, i)) end if end if next i if not myrng is nothing then .range(.columns(1), .columns(lastcol)).hidden = true myrng.entirecolumn.hidden = false end if application.goto reference:=range("a1"), scroll:=true ’a1セルは表示されていない可能性がありますが一番左と言う意味で end with application.screenupdating = true end sub こんな感じでどうでしょう。