- ベストアンサー
エクセルの表である列のみ表示させたい
共通 イ ロ ハ ABC DEF GEIJK LMNOP 1 2 3 ----------------------- 仮にA~P列それ以上にデーターが入力されています 入力する時ある分類毎に入力をしたいのですが あまり横に長すぎて、そこを出すのがいつも大変です、また、人が探すときもなかなか探し切れません (1)共通ABC+イ列 (2)共通ABC+ロ列 (3)共通ABC+ハ列 のように、出したい箇所が簡単に表示させることができますでしょか。 私はマクロは全く分かりませんが、ボタン一つでそれが選択され表示されたら理想だなと思います マクロが分からない私ですが、今後必要なら勉強したいと思いますのでそちらの方面のご指導もお願いします
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
表示→ツールバー→Visual Basic でVisual Basic のツールバーを出して デザインモードのアイコン(三角定規と鉛筆風のアイコン)を押して編集モードにします。 編集モードでコマンドボタンをクリックすれば、四隅、上下左右を引いて大きさ、高さの 調節ができるようになります。当然、移動もできます。 または、上記編集モードでコマンドボタンを右クリックしてプロパティを選択。 プロパティダイアログで、 Height、Widthで高さ、幅、 Captionで表示する文字、 Fontでそのフォント属性など、 Top、Leftで表示する位置 などを変更できます。 デザインモードのアイコンを再度押すと編集モードが解除されボタンが機能するようになります。
その他の回答 (9)
- nishi6
- ベストアンサー率67% (869/1280)
ANo.#4では、ボタンを使うと、ボタンを置く位置、表示の問題、『押す』必要があることなどがあり、ショートカットキーに登録する方法を回答しました。 以下にボタンを使う例を書きます。(勉強の意味で?) ※その前に、ANo.#5~ANo.#8がなぜエラーがでるか・・・ ANo.#8の補足から時間も経ってますし、進展していない様に見えますので、気づいた事を書いてみます。 【対応方法1】 Worksheets("sheet1").Activate は意味のない行になっているようです。 あってもいいですが、2行目に次の1行を追加します。 ActiveCell.Activate ある意味、有名な命令です。 Excel97の場合、ボタンを押した場合、シートはアクティブになっているとは限りません。 従って、列の表示を制御するHiddenが実行できなくなる場合が起きることがあります。 そのため、『ActiveCell.Activate』という?な命令が必要になるわけです。 『アクティブなセルをアクティブにしなさい』という奇妙な命令です。これで シートのセルが選択された状態になり、Hiddenが実行できるはずです。 『ActiveCell.Activate』が無ければ、VBE画面で三角の実行ボタンを押す事と、 シート上でボタンを押す事は異質な事になるわけです。 【対応方法2】 別の対応方法として、ANo.#5のコードはそのままにしておいて、 編集モードでボタンを右クリックしてプロパティを選択し、 TakeFocusOnClickをFalse にします。(3つのボタン全てです) これで、多分エラーは出ないでしょう。ボタンにフォーカスがいかなくなります。 ボタンを使う例ですが、列の表示を行う方法を Hidden = False → Hidden = True ではなく、 Hidden = True → Hidden = False にしています。 『とりあえず全ての列を隠しておき、表示したい列を表示する』としています。ANo.#4と同じ考え方です。 Sheet1のコードウインドウに貼り付けます。 ↓ Private Sub CommandButton1_Click() ActiveCell.Activate Columns("D:P").Hidden = True Columns("D:F").Hidden = False End Sub Private Sub CommandButton2_Click() ActiveCell.Activate Columns("D:P").Hidden = True Columns("G:K").Hidden = False End Sub Private Sub CommandButton3_Click() ActiveCell.Activate Columns("D:P").Hidden = True Columns("L:P").Hidden = False End Sub
補足
半分できなくてあきらめていましたが できました、これは私にとっては画期的なことで大変感謝 します、ありがとうございました もう一つ教えてほしいのですがよろしくお願いします ボタンが機能してから、ボタンのサイズの修正しようとするとできません どうすればできるのでしょうか よろしくお願いします
- imogasi
- ベストアンサー率27% (4737/17069)
再再度説明します。 新しいエクセルのブックBOOK1を作成してください。 Sheet1上にCommandButtonを1つ作成してください。 コマンドボタンの周囲の小四角が4つまたは6つ出ているままで、 (左マウスボタンで)、ダブルクリックして下さい。 VBEの画面が現われて Private Sub CommandButton1_Click() End Sub が現われるから、PrivateとEndSubの間に Worksheets("sheet1").Activate ActiveSheet.Columns("a:f").Hidden = False ActiveSheet.Columns("d:f").Hidden = True の3行を貼りつけてください。 そしてPrivateとEndSubの5行のどれかの行に、カーソルを 点滅させておいて、「実行」をクリック-->「Sub/ユーザー・・」をクリックしてください。 そしてエクセルのSheet1の画面に戻り、ボタンをクリックしてください。D,E,F列が非表示になっているはずです。
お礼
長い間補足を書いて無理なことをお願いしました 始めてマクロというものを勉強しました 懇切丁寧におつきあいいただき助かりました 出来るようになりました 今後とも初心者ですがよろしくお願いします
補足
またまた大変すいません、出張に行っていたものですから補足が遅れて申し訳ありません 何回もやるのですが下記のようになります >「実行」をクリック-->「Sub/ユーザー・・」を クリックしてください。 そしてエクセルのSheet1の画面に戻り、 →戻った時点でD~Fが非表示になっています >ボタンをクリックしてください。D,E,F列が非表示 になっているはずです。 →クリックすると、前回のように 「実行時エラー’1004’ RangeクラスのHiddenプロパティを設定できません 」 が出てしまいます すいません、いつも夜遅くまで回答してもらって申し訳 ありませんが、もう少し教えて下さい エクセルは97です
- imogasi
- ベストアンサー率27% (4737/17069)
ご要望により再度補足します。 ----------- (12)Private Sub CommandButton1_Click () End Subの間にカーソルを置いて、メニューバーの「実行」をクリックする。==> SubとEndSubの間に前々回に解答したプログラム --- Worksheets("sheet1").Activate ActiveSheet.Columns("a:f").Hidden = False ActiveSheet.Columns("d:f").Hidden = True --- を打ち込むかまたはコピーアンドペーストしたでしょうね。これをしないと何もしないプログラムとなって、何の結果も現われません。 ----- プログラムの実行について、Module画面のメニュバーの「実行」をクリックし、その後「Sub/ユーザーフォームの実行」をクリックして頂いたでしょうか。 この部分が説明文にもれていましたね。 ----- (何も動き無しで良い)。==>Moduleの画面(プログラムを入力する画面)は、「実行」と「Sub・・」をクリックしても、何も変わらないと言うことです。裏にあるワークシートでは、列が隠れる瞬間があるのですが、 裏にあるワークシートが見えないため「何も動き無しで良い」と表現したものです。 ---- 私もテストをしてあの回答を書きました。間違いないと思いますが再度やってみます。(やって見ました。)再度やってみると、Aタイプでは、ワークシートを出して見る(ステータスバーのエクセルのアイコンをクリックする)と、D,E,F列が消えているのが判ります。
補足
申し訳ありません、2回通りしたのですが2回ともボタンをクリックすると 実行時エラー’1004’ RangeクラスのHiddenプロパティを設定できません が出てしまいます どのやり方が悪いのか分からずすいません もう一度、大変お手数をお掛けしますが教えて下さい 今回の (12)Private Sub CommandButton1_Click () End Subの間にカーソルを置いて、メニューバーの「実行」をクリックす る。==> SubとEndSubの間に前々回に解答したプログラム --- Worksheets("sheet1").Activate ActiveSheet.Columns("a:f").Hidden = False ActiveSheet.Columns("d:f").Hidden = True --- を打ち込むかまたはコピーアンドペーストしたでしょうね。これをしないと何も しないプログラムとなって、何の結果も現われません。 ----- プログラムの実行について、Module画面のメニュバーの「実行」をクリッ クし、その後「Sub/ユーザーフォームの実行」をクリックして頂いたでしょ うか。 *******と 前回の (8)Private Sub CommandButton1_Click() End Sub とでるから、その間に前日解答した通り(タイプA部)を打ち込む。 (9)・・・・・・・(11) (12)Private Sub CommandButton1_Click () End Subの間にカーソルを置いて、メニューバーの「実行」をクリックす る。 ****** で、(8)の時(タイプA部)を打ち込む(私はコピー貼り付けしました)。~Buttonn3まで入力して「実行」? それか (12)の時Button1の時「実行」をクリックしてプログラムを入力して、次のButton2で「実行」とやっていけばいいいのでしょか? 何かそこがもう少し分かりません 他にも変なことをしているかもしれませんが、恐れ入りますがもう少し教えてもらえないでしょうか よろしくお願いします
- imogasi
- ベストアンサー率27% (4737/17069)
New-Remarkのご要求に答えて、VBAのプログラムを組むまでのステップをマニュアル的に記述して見ます。 文章で書くと複雑ですが、ご成功を祈ります。 (1)データを入れようとしている、今話題にしているエクセルの表(シート名をSheet1と仮定する)を開きます。 (2)メニューバーの「表示」-「ツールバー」-「VisualBasic」をクリックする。 すると「コントロールツールバー」があらわれる。 「金槌形(父のような)」をクリックする。すると「コントロールツールボックス」がワークシート上に現れる。 (3)「コマンドボタン」をクリックして(窪むので)、ワークシート上でマウスボタンを押すと「+」印が出るので、右下方向へマウスを押し下げたまま引っ張るとボタンが現れる。(「コマンドボタン」は「ab|」の右隣の四角のアイコンです。)サイズは小四角を動かし、位置の調節は十字矢印をドラッグして動かす。 (4)もう一回「コントロールツールボックス」のコマンドボタンをクリックし、もう一つワークシート上の別の位置にコマンドボタンを作成する。 (5)次ぎに3個目のコマンドボタンをコントロールツールボックスからワークシート上の別つの位置に作成する。 (6)ワークシートのメニューバーの「ツール」-「マクロ」-「VisualBasicEditor」を順にクリックする。 (7)プロジェクトエクスプローラーの「VBAProject(Book1)」の「Sheet1」をダブルクリックする。 「General」側の▼をクリックし、「CommndButton1」をクリックする。 「Declaration」側は「Click」をクリックする。 (8)Private Sub CommandButton1_Click() End Sub とでるから、その間に前日解答した通り(タイプA部)を打ち込む。 (9)同様に「General」側はCommndButton2をクリックする。 「Declaration」側は「Click」を出したままにする。 (10)Private Sub CommandButton2_Click() End Sub とでるから、その間に前日解答した通り(タイプB)を打ち込む。 (11)CommandButton3も同じく行う。 (12)Private Sub CommandButton1_Click() End Subの間にカーソルを置いて、メニューバーの「実行」をクリックする。(何も動き無しで良い)。 (13)CommandButton2,CommandButton3に付いても、同様に「実行」を行う。 (14)メニュバーの「表示」-「オブジェクト」をクリックし、ワークシートに戻る。 (15)コマンドボタンの1か2か3をクリックして試す。
補足
とても分かりやすい説明の回答ありがとうございます 初心者ながら、説明の通りやっているのですが(15)で試すのですが、画面が変わりません (12)Private Sub CommandButton1_Click () End Subの間にカーソルを置いて、メニューバーの「実行」をクリックす る。(何も動き無しで良い)。 →?「実行」をクリックすると下に出てきますがそのまま次の(13)に移ってもいいのでしょうか >。(何も動き無しで良い)。とあるのでその通りしました (15)コマンドボタンの1か2か3をクリックして試す。 ここまで2回通りやり直しましたが、画面が変わりません 度々補足を書いて申し訳ありませんが、是非このやり方を勉強したいので教えて下さい よろしくお願いします
- imogasi
- ベストアンサー率27% (4737/17069)
思いつくまま、生煮えのアイデアで済みません。 良くわかっていらっしゃる方々には間違いがあれば、ご指摘下さい。 「列の非表示」をEXCELL VBAで作って見ました。 タイプが3種類あると仮定します。 コマンドボタンを3個貼りつけます。それぞれにクリックイベントで (Aタイプ) Private Sub CommandButton1_Click() Worksheets("sheet1").Activate ActiveSheet.Columns("a:f").Hidden = False ActiveSheet.Columns("d:f").Hidden = True End Sub (Bタイプ) Private Sub CommandButton2_Click() Worksheets("sheet1").Activate ActiveSheet.Columns("a:f").Hidden = False ActiveSheet.Columns("g:h").Hidden = True End Sub (Cタイプ) Private Sub CommandButton3_Click() Worksheets("sheet1").Activate ActiveSheet.Columns("a:f").Hidden = False ActiveSheet.Columns("e:f").Hidden = True End Sub とSheet1にイベント・プロシージュアーを作れば、 (1)Aボタンをクリック-->A,B,C,G,H,I,Jが表示 (2)Bボタンをクリック-->A,B,C,D,E,F、I,Jが表示 (3)Cボタンをクリック-->A,B,C,D,G、H,I,Jが表示 となると思います。 ただコマンドボタンが列の非表示と共に動いたり、消えたり する欠点があり、私の今の力では、浮いたようにして、何時も 表示することが出来ません。 ただA1セルを見だしに使い、(またはA1,B1,C1セルを空白に 設定して)犠牲にして、1セル(または3セル)に3個の A,B,Cボタンをつめこみ(各セル配置して)行固定で何時も表示するように設定すれば、目的は叶えられるのではと思います。 上例では、連続隣接列をE:Fのように指定していますが ActiveSheet.Columns("e").Hidden = True ActiveSheet.Columns("f").Hidden = True のように1列ずつ分けて記述すれば、飛び飛び列指定もできるのでは。
補足
返事が遅くなって申し訳ありませんが >コマンドボタンを3個貼りつけます。それぞれにクリックイベントで の最初の内容で、どうすればよいか分からなく、お忙しいところ申し訳ありませんが、 初歩的なことが分かって無くもう少し教えてもらえないでしょうか よろしくお願いします
- nishi6
- ベストアンサー率67% (869/1280)
『データ入力が沢山有り、余分なキー操作をなくしたい。できれば切替にマウスも使いたくない』というような主旨でしょうか。質問のように3区分なら左手辺りのキーにトグルスイッチ的なマクロを割り当てれば操作は速くなるでしょう。 不要かもしれませんが書いてみました。 下のマクロはSheet1で実行するとしています。 ツール→マクロ→Bisual Basic Editor でVBE画面に移り、表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示し、 Sheet1をダブルクリックして、出てきたコードウインドウに下記マクロを貼り付けます。 ColKubn(1, 0) = "D": ColKubn(1, 1) = "F" が質問にあるイ列の最初と最後の列名です。 ロ列、ハ列も同様な意味です。実際の表の形にする時はここを修正します。 マクロの貼り付けが終わったら、シートにかえり、 ツール→マクロ→マクロでマクロダイアログを出してこのマクロ『ColumnsCoose』を選択して、 オプションボタンでマクロオプションダイアログを表示。 Ctrl+と書かれた小さな窓に半角大文字の『Z』を入力。うまく登録できれば、Ctrl+がCtrl+Shiftに変わります。 マクロオプションダイアログでOK。マクロダイアログはキャンセルします。 うまくいっていれば、これでマクロが登録されていて、Ctrl+Shift+Zを押すことで表示列が イ列→ロ列→ハ列→イ列と順次切り替わります。この操作を左手で行い、右手はテンキーで入力すればマウスを持ちかえることが不要になり、処理は速くなるでしょう。 質問の意味はこういうことだったのでしょうか? 質問のロのGEIJKは『GHIJK』として、イ、ロ、ハはそれぞれ連続していて列は重複していないとしています。 ロの『E』に重要な意味があれば少し書き直す必要があります。 最後の処理で行を次の行の先頭に送っています。不要なら削除して下さい。なお、列の再表示はマニュアルで行って下さい。 ここから ↓ Dim viewKubun As Integer '今どの区分列を表示しているか Const viewMax = 3 '質問通りに3区分とする 'トグルスイッチのようにぐるぐる更新する Sub ColumnsCoose() Dim ColKubn(3, 1) As String '列を区分した時の開始列と最後の列名 ColKubn(1, 0) = "D": ColKubn(1, 1) = "F" '最初の区分の、先頭列の列名、最後の列名 ColKubn(2, 0) = "G": ColKubn(2, 1) = "K" ' 次の区分の、先頭列の列名、最後の列名 ColKubn(3, 0) = "L": ColKubn(3, 1) = "P" ' 次の区分の、先頭列の列名、最後の列名 viewKubun = viewKubun + 1 '区分を次にする If viewKubun > viewMax Then viewKubun = 1 '最大区分数より大きくなったら1にする '対象区分の列を全て非表示にする Columns(ColKubn(1, 0) & ":" & ColKubn(viewMax, 1)).Hidden = True 'viewKubunでカウントされた今回表示の列を再表示する Columns(ColKubn(viewKubun, 0) & ":" & ColKubn(viewKubun, 1)).Hidden = False '選択セルを1つ下の先頭(A列)に動かしておく(今A列でない場合) If ActiveCell.Column <> 1 Then Cells(ActiveCell.Row + 1, 1).Select End If End Sub
お礼
お礼が遅くなって申し訳ありません 分からないながら書いているようにしたら 出来ました すごいことが出来るのですね不思議です 自分でこんなことを考えるられるようになるには、どんな ように勉強したら出来るようになるのでしょうか また、時間のあるとき教えてもらえれば助かります よろしくお願いします
- eboshiiwa
- ベストアンサー率66% (639/955)
こんにちは。 2番の人と同じようにD1をクリックしてウインドウ枠の固定します。 次に 「D・I・F」の列を選択してデータ→グループとアウトラインの設定にて 列をグループ化します。 後は同じようにグループ化したい列を選択してグループ化をしていけば ワンクリックで表示、非表示が出来るようになります。
お礼
ありがとうございました
- w-disney
- ベストアンサー率8% (4/50)
質問の例でいくと D1をクリックして[ウィンドウ]→[ウィンドウ枠の固定]でABCが常に表示されるようになります 次にDEFを選んで名前ボックスに「イ」と書いてEnter GHIJKを選んで名前ボックスに「ロ」と書いてEnter LMNOPを選んで名前ボックスに「ハ」と書いてEnter これで設定は終わり 次からは 名前ボックスに「ハ」と書いてEnterを押せばABC LMNOPが表示されます 回答を外してたらごめんなさい
お礼
こんな機能初めて知りました、ありがとうございました
補足
お忙しいところ補足をかいて申し訳ありません もう少し教えて下さい 今日改めてやってみたのですが、 イの名前で範囲を変える場合変わりません また、イの名前を変えたい場合変わりません それもできたらいいなと思います教えて下さい
- yuuri-s
- ベストアンサー率14% (1/7)
質問の意味がよく分からなかったので ちゃんと答えられるかわからないですが。 表示はともかく、よびたしたい範囲が決まっているのであれば、 範囲に名前を付けてみてはどうでしょうか? セルを自分の好きな範囲を選択し、 左上にA1などと出ている所に、直接名前を入力します。 すると、選択した範囲に名前を付けることができ、 プルダウンメニューでいつでも呼び出せます。 また、表示をマクロでやりたいのなら、 マクロの自動記録が便利です。 自分のやりたいこと(印刷や表示)を 記録させて、あとで呼び出す方法です。 実際に、今手元にエクセルがないので、 説明が間違ってしまうかもしれませんが、紹介します。 まず、マクロの自動記録を選択してください。 ここて、名前を付けたり、ショートカットキーを割り振ることができます。 それから、自分の表示したい範囲を設定してください。 表示の設定や、範囲の設定が終わったら、 記録の終了を選択してください。 これて、表示のマクロを記録したことになります。 あとは、マクロから呼び出すか、ショートカットキーを割り振っていれば、 Ctrl+□でマクロを実行してみてください。 説明がへたでご免なさい。
お礼
>左上にA1などと出ている所に、直接名前を入力します。 こんな機能初めて知りました、ありがとうございました
お礼
出来ました、ほんとにほんとにありがとうございました 初心者で申し訳ありませんでした 今後も質問を出すかもしれませんがよろしくお願いします