Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1129 / 13645 ツリー ←次へ | 前へ→

【76155】ある文字がある場合、その列を非表示 ゆーあ 14/10/6(月) 10:02 質問[未読]
【76161】Re:ある文字がある場合、その列を非表示 kanabun 14/10/6(月) 16:35 発言[未読]
【76163】Re:ある文字がある場合、その列を非表示 ゆーあ 14/10/6(月) 19:08 発言[未読]
【76164】Re:ある文字がある場合、その列を非表示 kanabun 14/10/6(月) 19:49 発言[未読]
【76165】Re:ある文字がある場合、その列を非表示 ゆーあ 14/10/7(火) 9:06 お礼[未読]

【76155】ある文字がある場合、その列を非表示
質問  ゆーあ  - 14/10/6(月) 10:02 -

引用なし
パスワード
   Win XP Excel2000
いつもお世話になっております。

価格表に、
コマンドボタン(表示、非表示)を設置しており、
非表示ボタンを押すと、指定してある列のみ非表示になるようにしております。
しかし複数人が使用する為、場合によって、
列を挿入or削除されることがあり、現状の列指定での非表示では不具合が御座います。

表の各項目は、必ず4行目(A4,B4,C4…)に記載されており、
非表示にしたい文字も、「原単価」「実行単価」のみで御座います。
以上より、
行いたいことの流れとして、
1.コマンドボタン(非表示)を押す
2.4行目(A4,B4,C4…)の文字を確認
3.4行目に「原単価」or「実行単価」と記載されている場合、その列を非表示
4.コマンドボタン(表示)を押すと、3.で非表示にした列を表示

申し訳御座いませんが、ご教授お願い致します。

【76161】Re:ある文字がある場合、その列を非表示
発言  kanabun  - 14/10/6(月) 16:35 -

引用なし
パスワード
   ▼ゆーあ さん:

>列を挿入or削除されることがあり、現状の列指定での非表示では不具合が御座います。
>
>表の各項目は、必ず4行目(A4,B4,C4…)に記載されており、
>非表示にしたい文字も、「原単価」「実行単価」のみで御座います。

要らぬお節介ですが、コマンドボタン2つを トグルボタン1つにして、
表示/非表示をひとつのボタンで出来るようにしてみました。

ボタンのあるシートのモジュールにコードを書いておきます。

'----------- Sheetモジュール
Option Explicit

Private Sub ToggleButton1_Click()
 Dim e, m
 
 With ToggleButton1
   If .Caption = "非表示" Then
     For Each e In Array("原単価", "実行単価")
      m = Application.Match(e, Rows(4).Cells, 0)
      If IsNumeric(m) Then
        Columns(m).Hidden = True
      End If
     Next
     .Caption = "表示"
   Else
     Me.UsedRange.EntireColumn.Hidden = False
     .Caption = "非表示"
   End If
 End With
End Sub

【76163】Re:ある文字がある場合、その列を非表示
発言  ゆーあ  - 14/10/6(月) 19:08 -

引用なし
パスワード
   ▼kanabun さん:
コメントありがとございます。
又、トグルボタンへの変更により非常にスッキリ致しました。

ご教授頂いたコードを早速実行させて頂き、
イメージ通りの動作を確認出来ました!!ありがとうございます!!
検索方法や文字があるセル位置から、列を指定する方法かなり勉強になりす!

自身でもチャレンジしてみますが1点だけ、
ご説明不足で大変恐縮で御座いますが、
4行目に「原単価」「実行単価」の文字が2箇所あります。
2箇所目に関しては、ご教授頂いたコードで非表示にならない状況ですので、
アドバイス等頂ければ幸いで御座います。

以上、宜しくお願い致します。

【76164】Re:ある文字がある場合、その列を非表示
発言  kanabun  - 14/10/6(月) 19:49 -

引用なし
パスワード
   ▼ゆーあ さん:

>イメージ通りの動作を確認出来ました!!ありがとうございます!!
>検索方法や文字があるセル位置から、列を指定する方法かなり勉強になりす!

>1点だけ、
>ご説明不足で大変恐縮で御座いますが、
>4行目に「原単価」「実行単価」の文字が2箇所あります。

あ〜、そういうのはあらかじめ条件として言っておいてもらわないと、
(Match関数は最初の1つを見つけるだけなので)
書き方まるで変わってきます。

複数列のばあいの一サンプルです。

Private Sub ToggleButton1_Click()
 Dim i As Long, ss As String
 
 With ToggleButton1
   If .Caption = "非表示" Then
     For i = 1 To Me.UsedRange.Columns.Count
      Select Case Cells(4, i).Value
       Case "原単価", "実行単価"
        Columns(i).Hidden = True
      End Select
     Next
     .Caption = "表示"
   Else
     Me.UsedRange.EntireColumn.Hidden = False
     .Caption = "非表示"
   End If
 End With
End Sub

【76165】Re:ある文字がある場合、その列を非表示
お礼  ゆーあ  - 14/10/7(火) 9:06 -

引用なし
パスワード
   ▼kanabun さん:

コメント&コードありがとうございました!
バッチリ希望の動作確認致しました!大変感動です!

コードの違いについても勉強させて頂きます!
本当にありがとうございました!!

1129 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free