質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

11758閲覧

VBA If文について セルの値がない場合の条件分岐

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/10/25 04:14

編集2021/10/25 10:31

下記内容で、Range("A8")はテーブルの中のセルを指しています。A8セルの中が空白なら処理を何もせず、終わりたいのですが、下記内容だとIf後の処理が実行され「Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
False, True, False, True)」このピボットテーブル表記を変更する部分でエラーが出ます。値が入っていないと編集できない部分なので、ここでエラーが出ることは問題ではなく、セルが空白の場合、処理をしないようにすれば特に問題ないのですが、その条件分岐ができません。

この記述内容でなぜ条件分岐できないのでしょうか?
If Range("A8").Select <> "" Then ここで、A8セルが空白でない場合、処理を実行しますとしているつもりです。

記述内容もあわせて教えてください。

以上ご確認お願いいたします。

VBA

1Sub 更新() 2'不適合抽出 3Application.ScreenUpdating = False 4 5Dim namelist As ListObject 6Dim i As Long 7Dim names As String 8 9Sheets("原紙").Select 10Set namelist = ActiveSheet.ListObjects("氏名") 11Sheets("記入").Select 12 13 14If Range("A8").Select <> "" Then 15 16 For i = 1 To namelist.ListRows.Count 17 names = namelist.ListRows(i).Range(1).Value 18 Sheets("記入").Select 19 ActiveSheet.ListObjects("全体").Range.AutoFilter Field:=3, Criteria1:=names 20 Range("全体[[#Headers],[NO]]").Select 21 Range(Selection, Selection.End(xlToRight)).Select 22 Range(Selection, Selection.End(xlDown)).Select 23 Selection.Copy 24 Sheets(names).Select 25 Range("A20").Select 26 ActiveSheet.Paste 27 Columns("A:I").EntireColumn.AutoFit 28 Sheets("記入").Select 29 ActiveSheet.ListObjects("全体").Range.AutoFilter Field:=3 30 Range("A1").Select 31 Next i 32 33 34'グラフ更新 35Dim mySheet As Object 36 For Each mySheet In ThisWorkbook.Sheets 37 If mySheet.Name = "原紙" Then 38 GoTo continue 39 ElseIf mySheet.Name = "記入" Then 40 GoTo continue 41 End If 42 43 Sheets(mySheet.Name).Select 44 ActiveSheet.ChartObjects("グラフ 1").Activate 45 ActiveChart.PivotLayout.PivotTable.PivotCache.Refresh 46continue: 47 Next 48 49Sheets("全体").Select 50 51'グラフ表記更新 52 Sheets("全体").Select 53 Range("A32").Select 54 **Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _ 55 False, True, False, True)** 56 57 58Sheets("記入").Select 59Range("A1").Select 60ThisWorkbook.Save 61Application.ScreenUpdating = True 62 63End If 64End Sub 65

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

変更前の質問

下記内容で、Range("全体")はテーブルを指しています。テーブルの中が空白ならMsgboxにてメッセージを表記、それ以外なら、Elseより下の処理をしてほしいのですが、("全体")のテーブルに値を入力しても「値が入力されていません」とメッセージが出てしまいます。

CountA関数で値や式のあるセルの数を取得できます。

vba

1If WorksheetFunction.CountA(Range("全体"))=0 Then 2 MsgBox "値が入力されていません" 3Else

質問内容が変更されたので

If Range("A8").Select <> "" Then ここで、A8セルが空白でない場合、処理を実行しますとしているつもりです。

If Range("A8").Select <> "" Then

Selectはそのセルを選択しなさいと言う命令です。
セルの値を取得するのはValueです。

If Range("A8").Value <> "" Then

投稿2021/10/25 04:34

編集2021/10/25 11:26
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/25 10:33

hatena19様 ご返信ありがとうございます。 私の説明が悪かったと思います、セルに値がある場合にのみ後の処理を実行したいという内容です。 質問内容も分かりやすいよう変更いたしましたのでもしよろしければ、再度ご教授お願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問