• 締切済み

EXCELマクロでIFの複数指定

すみません。たびたび素人質問になりますが、 F26が空白でないときに、F26を選らんで「keisan」処理に進む というのがあるのですが、↓ If Range("F26").Value <> "" Then   Range("F26").Select   keisan End If これを、F26の条件が複数になるときの記述に変更したいのですが。 具体的には、  F26が、空白でないとき 且つ同じF26に「#REF!」の文字が含まれ ないとき に、F26を選らんで・・という場合です。 どなたか教えて頂けるとありがたいのですが・・

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

次のようにしてはどうでしょう。 If IsEmpty(Range("F26")) = False And IsError(Range("F26").Value) = False Then

bxd00263
質問者

お礼

教えていただいたやり方でうまくいきました。 ありがとうございます。

関連するQ&A

  • excel2000マクロについて

    下記の様なマクロを書いていますが、別のマクロの記述の仕方で短縮に書くことはできないでしょうか。 Sub 承認捺印() Sheets("実行").Select If Range("E13").Value = "申請者" Then Sheets("ログイン").Select If Range("F11").Value = "a8012661" Then Sheets("印章").Select ActiveSheet.Shapes("Picture 15").Copy Call 申請者捺印 End If If Range("F11").Value = "a6601456" Then Sheets("印章").Select ActiveSheet.Shapes("Picture 16").Copy Call 申請者捺印 End If If Range("F11").Value = "t9907028" Then Sheets("印章").Select ActiveSheet.Shapes("Picture 17").Copy Call 申請者捺印 End If If Range("F11").Value = "a7545410" Then Sheets("印章").Select ActiveSheet.Shapes("Picture 18").Copy Call 申請者捺印 End If If Range("F11").Value = "t9806047" Then Sheets("印章").Select ActiveSheet.Shapes("Picture 19").Copy Call 申請者捺印 End If If Range("F11").Value = "t0206030" Then Sheets("印章").Select ActiveSheet.Shapes("Picture 20").Copy Call 申請者捺印 End If  end if end sub Sub 申請者捺印() Sheets("報告票").Select Range("m3").Select ActiveSheet.Paste Range("a1").Select End Sub

  • マクロの簡素化

    下記マクロです。 Range("AE6:AE1005").Select Selection.ClearContents Selection.Interior.ColorIndex = xlNone If Range("AD6").Value > 5 Then Range("AE6") = "*" Range("AE6").Select With Selection.Interior .ColorIndex = 3 End With Else End If If Range("AD7").Value > 5 Then Range("AE7") = "*" Range("AE7").Select With Selection.Interior .ColorIndex = 3 End With Else End If If Range("AD8").Value > 5 Then Range("AE8") = "*" Range("AE8").Select With Selection.Interior .ColorIndex = 3 End With Else End If 中略(セルを一個づつ指定しています) If Range("AD1004").Value > 5 Then Range("AE1004") = "*" Range("AE1004").Select With Selection.Interior .ColorIndex = 3 End With End If If Range("AD1005").Value > 5 Then Range("AE1005") = "*" Range("AE1005").Select With Selection.Interior .ColorIndex = 3 End With Else End If Range("AE3").Select 有るセルを参照しその値が5以上だったら別のセルに*マークとセルに色を付けるマクロですが、一個づつセル指定をしていますが、何とか短く出来ないでしょうか? お分かりになる方宜しくお願い致します。

  • エクセル マクロ ダブルクリックで…(2)

    たびたび申し訳ございません。 先ほどエクセルでダブルクリックをすると順番に該当セル内の値が「有」→「無」→「空白」 となるマクロをご教授頂き、下記の内容で解決した者です。 B列についての該当セルへの入力がなされるという内容だったのですが、実はC列にも同様の処理を致したく、またもや素人はなすすべが無くなってしまいました。 B列は「要」「不要」「請求」「空白」としたいと思います。 たびたび大変恐縮ですがよろしくご教授くださいませ。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("d1:d999")) Is Nothing Then Exit Sub With Target   If .Value = "" Then    .Value = "有"   ElseIf .Value = "有" Then    .Value = "無"   ElseIf .Value = "無" Then    .Value = ""   End If End With End Sub

  • Excel VBA

    初心者で済みません 少し困っています。よろしくお願いします。 Range("J17") = Range("F17") * Range("H17") If Range("J17").Value = "0" Then Range("J17").Value = "" End If Range("J18") = Range("F18") * Range("H18") If Range("J18").Value = "0" Then Range("J18").Value = "" End If Range("J19") = Range("F19") * Range("H19") If Range("J19").Value = "0" Then Range("J19").Value = "" End If 上記のコードを簡単にしたいのですが、どうすればいいのか、わかりません。どうか教えていただけませんでしょうか?

  • Excelのマクロで、IFを複数セルに指定するには

    セルA1、B1、C1をダブルクリックすると各セルの値が+1ずつ増える Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then Target.Value = Target.Value + 1: Cancel = True If Target.Address = "$B$1" Then Target.Value = Target.Value + 1: Cancel = True If Target.Address = "$C$1" Then Target.Value = Target.Value + 1: Cancel = True End Sub というマクロを使用致しておりますが、これに追加で セルA1をダブルクリックした時に、A1と同時にセルC1も+1増やせる 方法があれば教えて頂けると幸いです。 宜しくお願い致します。

  • エクセルマクロ文を 教えてください

    お世話になります。 下記マクロ文で各シ-トのV4セル或いはW4セル or X4セルの値が増減値と表示されている場合には、当該シ-トは当該セル列と前2列の幅を0にする目的で記載したのですが、ステップインでは全く処理を行っていない形となっております。 初心者のため教則本を横に置いて作成したのですが所与目的を達成させる正しいマクロ文を お教えいただけますよう御願いいたします。 Application.ScreenUpdating = False Worksheets("表紙").Visible = True Worksheets("表紙").Select Dim sht As Worksheet For Each sht In Worksheets Range("V4").Select If Range("V4").Value = "増減値" Then Range("T4:V4").ColumnWidth = 0 End If If Range("W4").Value = "増減値" Then Range("U4:W4").ColumnWidth = 0 End If Range("X4").Select If Range("X4").Value = "増減値" Then Range("V4:X4").ColumnWidth = 0 End If Next Worksheets("表紙").Activate Worksheets("表紙").Select Range("A1").Select Application.EnableEvents = True Application.Interactive = True Application.ScreenUpdating = True End Sub

  • マクロのコーディング

    すいません、下のコード(マクロなんですが)同じ処理を4回も繰り返しているので、(入りきらないので、2回にしました)ひとつにまとめたいです。どうすればいいでしょうか?教えて下さい。 '●業務番号チェック 'エラー時は青 If Range("H39:I39").Select <> "" Then If .Cells(43, 5).Value = "" Then Total_Check_Flg = True '色付の範囲の設定 Range("A43:B43").Select 'セルの色の設定(青) With Selection.Interior .ColorIndex = 41 End With Err_Kazu_4 = Err_Kazu_4 + 1 End If End If If Range("K39:L39").Select <> "" Then If .Cells(44, 5).Value = "" Then Total_Check_Flg = True '色付の範囲の設定 Range("A44:B44").Select 'セルの色の設定(青) With Selection.Interior .ColorIndex = 41 End With Err_Kazu_4 = Err_Kazu_4 + 1 End If

  • 再質問 長いIF文を短くしたい

    お世話になっております 先日1/24に、条件を示さずに「長いIF文を短くしたい」という質問をしてしまいました こちらの手抜きをお詫びします 前回keithinさんにアドバイスいただいた方法で書き直しましたので これをさらに簡単に書く方法があれば教えてください 以下は、Private Sub Worksheet_Change(ByVal Target As Range)内のマクロです If Target.Row >= 15 And Target.Row <= 100 And Target.Column = 9 Then If Range("I" & Target.Row).Value < Range("J" & Target.Row).Value Then If Range("G" & Target.Row).Value >= 1 Then If Range("I" & Target.Row).Value >= Range("G" & Target.Row).Value Then If Range("I" & Target.Row).Value Mod Range("G" & Target.Row).Value = 0 Then  処理 End If End If End If End If End If

  • excel vba ジャンプ

    excel2003のUserFormにてtextbox作成しました。 textbox1にページを入力すると指定のページにジャンプする コードを作成したのですが、動作的には目的とする事ができました。 ただ、初心者レベルで作成したので、コード記述が長く、 ページが増えるたびにコードを追記していかなければなりません。 下記に作成したコードを記述します。 もっと簡単に記述する方法はありますか? ---------------------------------------------------------- Private Sub TextBox1_Change() If TextBox1.Value = 1 Then ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollColumn = 1 Range("$A$15").Select End If If TextBox1.Value = 2 Then ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollColumn = 1 Range("$A$38").Select End If If TextBox1.Value = 3 Then ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollColumn = 1 Range("$A$69").Select End If If TextBox1.Value = 4 Then ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollColumn = 1 Range("$A$100").Select End If If TextBox1.Value = 5 Then ActiveWindow.ScrollRow = 131 ActiveWindow.ScrollColumn = 1 Range("$A$131").Select End If End Sub ---------------------------------------------------------- 上記記述で行っていることは、 textbox1に 1 と入力すると1ページ目が表示  キーボードでctrl+Homeの操作をした状態でカーソルがA15選択 textbox1に 2 と入力すると2ページ目が表示  表示の先頭が38行目、カーソルがA38選択 ページの行数が1ページ目だけ37行 2ページ目以降が31行ごとです。 実際は、200ページ以上あるのでなんとかしたいのですが・・・・

  • このマクロあっていますでしょうか?よろしくお願いいたします。

    ★sheetA Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$C$14" And Target.Address <> "$C$19" _ And Target.Address <> "$F$19" Then Exit Sub If Target.Address <> "$R$14" And Target.Address <> "$S$14" _ And Target.Address <> "$T$19" Then Exit Sub Application.EnableEvents = False With Sheets("B") .Range("F14").Value = Range("C14").Value .Range("F17").Value = Range("C19").Value .Range("F20").Value = Range("F14").Value .Range("F23").Value = Range("F19").Value End With With Sheets("C") .Range("F13").Value = Range("R14").Value .Range("F14").Value = Range("S14").Value .Range("F18").Value = Range("T19").Value End With Application.EnableEvents = True End Sub ★sheetB Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$14" And Target.Address <> "$F$17" _ And Target.Address <> "$F$23" Then Exit Sub Application.EnableEvents = False With Sheets("A") .Range("C14").Value = Range("F14").Value .Range("C19").Value = Range("F17").Value .Range("F19").Value = Range("F23").Value End With Application.EnableEvents = True End Sub ★sheetC Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$13" And Target.Address <> "$F$14" _ And Target.Address <> "$F$18" Then Exit Sub Application.EnableEvents = False With Sheets("A") .Range("R14").Value = Range("F13").Value .Range("S14").Value = Range("F14").Value .Range("T19").Value = Range("F18").Value End With Application.EnableEvents = True End Sub

専門家に質問してみよう