excelで作成したマクロを非表示にする方法と再び表示にする方法を教えていただきたい。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

『マクロを非表示』と『再び表示にする』の意味がよく分からないんですが・・・


まず、どのような状態の時に表示・非表示を切り替えるのでしょうか。

『マクロが見える状態』を想像すると、
(1)ツール→マクロ→マクロで マクロダイアログを出した時の表示
   A.マクロとしての機能を無効にするために、Sub Macro() とかを Sub Macro(E)とかにする。
     当然マクロは動かせない。
   B.コメントブロックと非コメントブロックを使ってマクロを無効にする
      見えなくするために   編集→全て選択→コメントブロック
      見えるようにするために 編集→全て選択→非コメントブロック
   C.当然(3)は有効(エクスポートして、ないから見えない)
   D.(4)を行ってもマクロは見える(マクロ名が見える)

(2)ツール→マクロ→Visual Basic Editor でVBE画面に移った時
   A.マクロを知らない人になら、コードウインドウやプロジェクトエクスプローラを
     非表示にしておく。(だましにもならないか)
   B.当然(3)は有効(エクスポートして、ないから見えない)
   C.当然(4)は有効

(3)マクロを別ファイルに格納する
   A.マクロをインポート、エクスポートする。

(4)パスワードを設定する
   A.VBE画面でツール→VBAProjectのプロパティの保護タブを選択し、パスワードを設定する。
     表示・非表示より、見せる・見せないになってしまいます。

意味がよく分からないため、漠然とした回答になってしまいました。
    • good
    • 0
この回答へのお礼

質問の悪さでご苦労をおかけしました。いろいろな面からご回答感謝致します。
(4)番目のパスワードの設定のつもりでした。それにしてもいろいろなことができること驚いています。ありがとうございました。

お礼日時:2002/04/21 22:14

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QEXCELマクロで、ある列の値が0の場合、非表示/表示ボタンで該当列を非表示切り替えしたいんです。

質問です。
タイトル通りなのですが、Excel2013を使用中です。
支払い台帳ファイルなのですが、弊社は取引業者数が多く、当月では取引しない業者も多く、非表示/表示ボタンをクリック一つで業者別計(N行目)の値が0だった場合、その該当業者(列)すべてを非表示にしたいのです。
何卒諸先輩方のご教示を宜しくお願いいたします。

Aベストアンサー

こんばんは!

>(N行目)の値が0だった場合、その該当業者(列)すべてを非表示にしたいのです。

>N列の値が「0」の場合、その「行」すべてを非表示・・・
というコトだとします。

↓の画像「ActiveX コントロール」のコマンドボタンを挿入し、
コマンドボタンのコードを↓のようにしています。

Private Sub CommandButton1_Click()
With ActiveSheet
If .AutoFilterMode = True Then
.AutoFilterMode = False
Else
Rows(1).AutoFilter field:=14, Criteria1:="<>0"
End If
End With
End Sub

これでコマンドボタンをクリックするたびにN列が「0」の行が
表示・非表示になると思います。

※ 的外れならごめんなさいね。m(_ _)m

こんばんは!

>(N行目)の値が0だった場合、その該当業者(列)すべてを非表示にしたいのです。

>N列の値が「0」の場合、その「行」すべてを非表示・・・
というコトだとします。

↓の画像「ActiveX コントロール」のコマンドボタンを挿入し、
コマンドボタンのコードを↓のようにしています。

Private Sub CommandButton1_Click()
With ActiveSheet
If .AutoFilterMode = True Then
.AutoFilterMode = False
Else
Rows(1).AutoFilter field:=1...続きを読む

QEXCELマクロで、ある列の値が0の場合、非表示/表示ボタンで該当列&行を同時に非表示に切替したい。

先日EXCELの質問をさせて頂きました。
https://oshiete.goo.ne.jp/qa/8944333.html
EXCELマクロで、ある列の値が0の場合、非表示/表示ボタンで該当列を非表示切り替えしたいんです。
行ではできましたが、列ではできませんでした。またボタンのワンクリックで同時に表示切り替えできれば最高です。

ちなみに行は物件名、列は業者名で入出金のあった物件以外は非表示、使用しなかった業者以外は非表示にしたいのです。
つまり業者別計で0あるいは、物件別計で0であった行あるいは列は非表示にしたいのです。
逆に考えれば計が0以外である行または列は表示でもよいのかもしれません。

何卒諸先輩方のお知恵を拝借したく存じます。宜しくお願いいたします。

Aベストアンサー

たびたびごめんなさい。

前回のコードではセルの表示形式は「数値」ではなく「通貨」になってしまいますね。
見た目は同じのようですが、どうしても「数値」で桁区切りにしたい場合は
あらかじめ設定してある表示形式を使った方が良いみたいなので↓のコードに変更してみてください。

Private Sub CommandButton1_Click()
Dim c As Range, myFlg As Boolean
Dim myFirst As Range, myFound As Range, myRng As Range
Dim myArea1 As Range, myArea2 As Range
Dim str1 As String, str2 As String '//☆新たに追加
Set myArea1 = Range("BM3:BM749")
Set myArea2 = Range("E750:ML750")
Application.ScreenUpdating = False
str1 = myArea1(1).NumberFormatLocal '//☆
str2 = myArea2(1).NumberFormatLocal '//☆
myArea1.NumberFormatLocal = "G/標準" '//★追加
myArea2.NumberFormatLocal = "G/標準" '//★追加
For Each c In myArea1
If c.EntireRow.Hidden = True Then
myFlg = True
Exit For
End If
Next c
If myFlg = True Then
ActiveSheet.Rows.Hidden = False
Else
Set myFound = myArea1.Find(what:=0, LookIn:=xlValues, lookat:=xlWhole)
If Not myFound Is Nothing Then
Set myFirst = myFound
Set myRng = myFound
Do
Set myFound = myArea1.FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myRng = Union(myRng, myFound)
Loop
myRng.EntireRow.Hidden = True
End If
End If

myFlg = False
For Each c In myArea2
If c.EntireColumn.Hidden = True Then
myFlg = True
Exit For
End If
Next c
If myFlg = True Then
ActiveSheet.Columns.Hidden = False
Else
Set myFound = myArea2.Find(what:=0, LookIn:=xlValues, lookat:=xlWhole)
If Not myFound Is Nothing Then
Set myFirst = myFound
Set myRng = myFound
Do
Set myFound = myArea2.FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myRng = Union(myRng, myFound)
Loop
myRng.EntireColumn.Hidden = True
End If
End If
myArea1.NumberFormatLocal = str1 '//☆
myArea2.NumberFormatLocal = str2 '//☆
Application.ScreenUpdating = True
End Sub

何度も失礼しました。m(_ _)m

たびたびごめんなさい。

前回のコードではセルの表示形式は「数値」ではなく「通貨」になってしまいますね。
見た目は同じのようですが、どうしても「数値」で桁区切りにしたい場合は
あらかじめ設定してある表示形式を使った方が良いみたいなので↓のコードに変更してみてください。

Private Sub CommandButton1_Click()
Dim c As Range, myFlg As Boolean
Dim myFirst As Range, myFound As Range, myRng As Range
Dim myArea1 As Range, myArea2 As Range
Dim str1 As String, str2 As String '/...続きを読む

Qマクロ:A列が表示→非表示/非表示→表示

条件分岐のマクロを作りたいです。

もしもA列とD列が 表示されている場合は、このボタンを押すと、それらの列がHIDEになる。

もしも隠れている場合は、このボタンを押すと、それらの列が再表示される。

・・このようなマクロの式を、教えてください・・。

Aベストアンサー

隠れてるか隠れてないか二択なので、条件分岐とかしなくても

sub macro1()
 columns(1).hidden = not columns(1).hidden
 columns(4).hidden = not columns(4).hidden
end sub

とかで十分です。

Q【マクロ】列を一括非表示/表示(特定シートのみ非表示にしたくない場合)

以前、すべてのシートのA列を一括で非表示/表示にするというマクロを
ご教授頂いたのですが、今度は、一括非表示/表示をしたいことに変わりはないのですが
特定シート(仮に前年、実績)のみA列を表示のままにさせたい場合はどのようにすればよいでしょうか?
何卒、ご教授願います。

Dim k As Long 'この行から//
Sub 非表示()
For k = 1 To Worksheets.Count
Worksheets(k).Columns("A").Hidden = True
Next k
End Sub

Sub 再表示()
For k = 1 To Worksheets.Count
Worksheets(k).Columns.Hidden = False
Next k
End Sub 'この行まで//

Aベストアンサー

こんにちは!

Sub 非表示()
Dim k As Long
For k = 1 To Worksheets.Count
If InStr("前年、実績", Worksheets(k).Name) = 0 Then
Worksheets(k).Columns("A").Hidden = True
End If
Next
End Sub

こんな感じではどうでしょうか?m(_ _)m

QExcelで重複行を非表示にする方法(重複行の最後の行だけ表示させる方法)について教えてください。

エクセルで重複するデータを非表示にする方法は、[データ]→[フィルタ]→[フィルタオプションの設定]を選択し、[重複するレコードは無視する]にチェックを入れればできますが、デフォルトでは重複行の最初の行だけを表示し、残りの重複行を非表示にしてしまいます。
最初の重複行ではなく最後の重複行だけを残し、他の行を非表示にしたいのですが方法がわかりません。
ちなみに上記の[重複するレコードは無視する]にチェックするまでの流れをマクロに記録させ、マクロの編集をクリックすると下記のような記述になっていました。

Columns("A:A").Select
Range("A1:A100").AdvancedFilter Action:=xlFilterInPlace, Unique:=True

このソースのどの部分を変更すれば、1番最後の重複行だけを残し他の行を非表示にすることが可能になるのか教えてください。
よろしくお願いします。

Aベストアンサー

フィルタの設定には無いようです

シンプルに

Sub test()
Dim i, ii As Integer
For i = Range("a65536").End(xlUp).Row To 2 Step -1
For ii = i - 1 To 1 Step -1
If Cells(i, 1).Value = Cells(ii, 1).Value Then
Rows(Cells(ii, 1).Row).EntireRow.Hidden = True
End If
Next ii
Next i
End Sub

A列の重複を対象にしています
最終行から比較していく方法です


人気Q&Aランキング

おすすめ情報