1465734412 エクセル VBA初心者です。

VBAの作り方と方法についてお教えください。
Mac 2011

エクセルで表を作成しました。
これが縦にエンドレスに長いのですが、
A列のセル中に2という数字が入った場合、
非表示をして印刷をかけたいと思うのですが
その場合のVBAの書き方をお教えください。

行4 7 10 13 の行が非表示にしたいのですが。

自分なりに調べたのですが
アドバイスいただけると幸いです。

Option Explicit
Private Sub Cmd隠す_Click()
 Dim 行番号 As Long

 '行を隠す
 For 行番号 = 4 To 13
  If Cells(行番号, 1).Value = "2" Then
   Cells(行番号, 1).EntireRow.Hidden = True
  End If
 Next 行番号
End Sub

Private Sub Cmd表示する_Click()
 '表全体を再表示する
 Cells.Select
 Selection.EntireRow.Hidden = False
 Selection.EntireColumn.Hidden = False

 Cells(1, 1).Select
End Sub

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2016/06/12 21:26:52
  • 終了:2016/06/19 21:30:03
id:Becky_moni

皆さま、ご連絡遅くなりまして申し訳ありません。
いろいろアドバイスいただけて感謝しております。

質問の書き方がよくなかったようなのですが、
VBAは初めてなので動作方法もわからず困っております。

簡単なやり方などお教えいただけると助かります。
MacのExcelで開発メニューからEditorを出しスプリクトを書いてますが、
実行できません。

そもそもの話で申し訳ありませんが
ご教授いただけると幸いです。

回答(0件)

回答はまだありません

  • id:takashi_m17
    これで動かないんですか?
    何をどうアドバイスほしいのでしょうか?
  • id:ken3memo
    >これが縦にエンドレスに長いのですが、
    >A列のセル中に2という数字が入った場合、
    > 非表示をして印刷をかけたいと思うのですが

    現在のコード
     '行を隠す
     For 行番号 = 4 To 13
      If Cells(行番号, 1).Value = "2" Then
       Cells(行番号, 1).EntireRow.Hidden = True
      End If
     Next 行番号
    が動いているなら、

    他の質問
    http://q.hatena.ne.jp/1463826490#a1256732
    を参考にすると、最終行が取得できるので、
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row
    として、


    '行を隠す
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row
    For 行番号 = 4 To 最終行
      If Cells(行番号, 1).Value = "2" Then
       Cells(行番号, 1).EntireRow.Hidden = True
      End If
    Next 行番号
    のループにすると
    エンドレス※どこかで終わる可変の行
    まで、非表示にできるのでは?
    あとは、印刷のコードを教えてくださいとか質問すると、
    親切な人たちが答えてくれると思います。

    最終行 = Cells(Rows.Count, 1).End(xlUp).Row
    試してみてください。

    .Value = "2" が 数値を~でとかも思ったけど、テストしてません。
    質問が読み切れなかったので、コメントで失礼します。
  • id:ken3memo
    ごめんなさい
    Cells(行番号, 1).EntireRow.Hidden = True
    だと、セルに対してなぜかエラーにならないけど、非表示にしているので、
    行に対して
    Rows(行番号).EntireRow.Hidden = True
    とRowsを使用すればいいと思います。
    '行を隠す
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row
    For 行番号 = 4 To 最終行
      If Cells(行番号, 1).Value = "2" Then
       Rows(行番号).EntireRow.Hidden = True
      End If
    Next 行番号

    Rows(行番号)を使ってみてください。


  • id:a-kuma3
    縦にエンドレスに長いのだったら、For ループ中に DoEvents を入れておいた方が良いかな(応答が返ってこないとドキドキするので)。

    ken3memo>Cells(行番号, 1).EntireRow.Hidden = True
    ken3memo>だと、セルに対してなぜかエラーにならないけど、非表示にしているので、
    特定のセルの EntireRow(そのセルがある行)に対して、Hidden = True にしているので、
    このままでも大丈夫です。
  • id:ken3memo
    >>
    >特定のセルの EntireRow(そのセルがある行)に対して、Hidden = True にしているので、
    このままでも大丈夫です。
    >
    <<
    コードを動かしていないのバレバレでしたね。
    フォローどうもです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません