ここから本文です

VBAについての質問です。 VBA初心者なのですが、調べながらやっと作ったVBAが 全...

hat********さん

2016/1/2616:28:23

VBAについての質問です。
VBA初心者なのですが、調べながらやっと作ったVBAが
全く機能せず困っております。

あるセルが空欄だった際(IFERRORで””が返された際)に
ある行を非表示にするVBAを有効にしたいと思っております。

以下のようなVBAを打ちました


Option Explicit
Sub B42()

If Range("B42") = "" Then
Cell(42, 2).EntireRow.Hidden = True

End If
End Sub



Option Explicit
Sub Cmd_B42を隠す()

Dim i As String
'行を隠す
i = Range(42, 2).Value

If i = "" Then
Cells(42, 2).EntireRow.Hidden = True
End If
Next i
End Sub


VBAが得意なみなさま~助けてください~~><

閲覧数:
50
回答数:
2

違反報告

ベストアンサーに選ばれた回答

ja7********さん

2016/1/2623:02:23

> あるセルが空欄だった際(IFERRORで””が返された際)に
> ある行を非表示にする

この あるセルが、B42だけだとしたら・・・
① のコードは、行非表示にする機能はあると思いますが、
数式の演算結果の空白かどうかの判定は、していません。

②のコードは、ちょっと・・・? な状態です。
> i = Range(42, 2).Value
この ↑ ような構文は、ありません。実行エラーです。
また、
> Next i
この ↑ Next に対する For が、ありません。

それで・・・
セルB42に限定し、空白(演算結果の""を含む)なら その行を
非表示にする ということなら、こんな感じでどうでしょうか。

Sub Test1()
With Range("B42")
   If .Value = "" Then
      .EntireRow.Hidden = True
   Else
      .EntireRow.Hidden = False
   End If
End With
End Sub

また、②のコードに Next が、有ったことから・・・
データ範囲のB列を対象にして、数式が、設定されていて
且つ、その演算結果が、"" の場合に限定する場合は、
こんな感じで、如何でしょうか。

Sub Test2()
Dim Rng As Range
For Each Rng In Range("B1").Resize(Cells.SpecialCells(xlCellTypeLastCell).Row)
   If Rng.HasFormula And Rng.Value = "" Then
      Rng.EntireRow.Hidden = True
   Else
      Rng.EntireRow.Hidden = False
   End If
Next
End Sub

まぁ、ちょっと仕様が、はっきりしませんので
状況説明を詳しくされた方が、良いかと思います。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

bec********さん

2016/1/2617:04:56

こういうことでしょう?

Sub Sample()

If Range("B42") = "" Then
Rows(42).Hidden = True
Else
Rows(42).Hidden = False
End If

End Sub

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる