IF文の使い方を教えてください

このQ&Aのポイント
  • A5001にデータがある場合は処理を中止し、データがない場合は処理を継続する方法について教えてください。
  • A5001にデータがない場合は処理を中止する記述が以下の通りですが、A5001にデータがある場合はどのように処理を中止すればよいでしょうか?
  • Valueが怪しいと思っていますが、処理を中止する方法を教えてください。
回答を見る
  • ベストアンサー

IF文の使い方を教えてください

もし A5001 に データがあるのなら処理を中止し、データが無ければ処理を継続する。内容のマクロを考えてますが、 A5001にデータがないなら処理を中止は下記の記述で良いかと思いますが、 逆にあったら処理を中止する記述はどうすればよいのですか? Value が怪しいかと思うのですが・・・・ お願いします。 If Range("読み込み!A5001").Value = "" Then MsgBox "データがありません", vbOKOnly, "データ有無確認" Exit Sub End If ret = MsgBox("過去のシュミレーションデータを削除します。よろしいですか?", vbYesNo + vbQuestion, "データ削除実行確認") If ret = vbNo Then Exit Sub End If

  • K-19
  • お礼率35% (55/157)

質問者が選んだベストアンサー

  • ベストアンサー
noname#77845
noname#77845
回答No.1

検証もしていませんが…、 If Range("読み込み!A5001").Value = "" Then でデータが無かった場合の処理が出来ているなら If Range("読み込み!A5001").Value <> "" Then でいいんじゃないでしょうか?

K-19
質問者

お礼

ありがとうございます。 すごいい!!!

関連するQ&A

  • マクロにおける条件文の作成の件

    以下の様に条件付きの計算式を作成しました。CommandButton3を押しても 計算しなかったり、TextBox3.Value > TextBox1 ではないときでもエラー メッセージが出ます。どこに欠点があるのか教えて下さい。 Private Sub CommandButton3_Click() Dim row As Integer If TextBox1.Value = Empty Then MsgBox ("Aが空欄です") Exit Sub End If If TextBox2.Value = Empty Then MsgBox ("Bが空欄です") Exit Sub End If If TextBox3.Value = Empty Then MsgBox ("Cが空欄です") Exit Sub End If If TextBox4.Value = Empty Then MsgBox ("Dが空欄です") Exit Sub End If If TextBox3.Value > TextBox1.Value Then MsgBox ("Cの値をAの値より小さくしましょう!") Exit Sub End If If TextBox4.Value > TextBox2.Value Then MsgBox ("Dの値をBの値より小さくしましょう!") Exit Sub End If TextBox5 = Round(TextBox1 * TextBox2 - (TextBox1 - TextBox3) * (TextBox2 - TextBox4) / 2, 0) End Sub

  • If文中のExit Sub

    Dim i As String i = TextBox1.Value If i ="" Then MsgBox "入力なし" Exit Sub End If Exit Subは何の意味が有るのでしょう? Exit Subを調べたり試したりしたのですが、良く、解りません。 宜しくお願い致します。

  • EXCEL2010 VBA 複数処理の終了

    EXCEL2010 VBAでコマンドボタンを押すと複数の処理を実行するようにしています。 Sub 実行() 処理A 処理B Ens sub 処理Aでは実行時に確認画面が出てNOを選択すると処理が終了するようにしています。 確認画面は下記の様な形です。 If MsgBox("処理を実行しますか?", vbYesNo + vbQuestion, "確認") = vbNo Then Exit Sub End If この処理Aの確認画面でNOを選択すると処理Aだけでなく処理Bも実行せず 終了するようにしたいのですが何か良い方法はないでしょうか? Exit Subにかわるすべての処理を終了させるコマンドがあれば良いのですが。。。

  • if文について

    Excel 2007 VBAを使用しています。 ↓のクリックイベントを実行するとif文のところで不具合があります。 商品シートのC列には、状況が保存されています。 該当した年月、"受取済み"、"注文中"以外の行データをリストさせます。 商品シートのJ列、W列には、該当した年月、"受取済み"、"注文中"以外の行データが存在するのですが、まったく検出してくれません。 対処方法を教えてくれませんか? ------------------------------------------- Option Explicit Private Sub CB1_Click() '変数を定義 Dim i As Long Dim maxRow As Long Dim inSheet As Worksheet Dim outSheet As Worksheet '入出力先のシートをオブジェクト変数へ格納 Set inSheet = Worksheets("商品") Set outSheet = Worksheets("結果") 'テキストボックスの内容を判定 If (Me.TextBox21.Value = "") Or (Not IsDate(Me.TextBox21.Value)) Then MsgBox "日付が入力されていません" Exit Sub End If '最終行番号を取得 maxRow = Me.Cells(Rows.Count, "A").End(xlUp).Row '商品シートの最終行番号で分岐処理 If maxRow > 3 Then '出力先を削除してヘッダーをコピー outSheet.Cells.Delete inSheet.Range("A3").EntireRow.Copy outSheet.Range("A1") Application.CutCopyMode = False Else '4行目以降にデータが入力されていなければメッセージで終了 MsgBox "該当データがありません" Exit Sub End If '4行目から最終行まで繰り返し For i = 4 To maxRow 'J列が日付であれば処理 If IsDate(inSheet.Cells(i, "J").Value) Then '--------機能しない箇所(開始) If Year(inSheet.Cells(i, "J").Value) <= Year(Me.TextBox21.Value) And _ Month(inSheet.Cells(i, "J").Value) <= Month(Me.TextBox21.Value) And _ CStr(inSheet.Cells(i, "W").Value) <> "受取済み" And CStr(inSheet.Cells(i, "W").Value) <> "注文中" Then '--------機能しない箇所(終了) inSheet.Rows(i).Copy outSheet.Rows(cnt + 2) End If End If Next i End Sub

  • マクロで左から一文字を

    いつもお世話になります。 Win 7 Excelll 2010 です。 現在ユーザーフォームで住所録を作成中です。 textBox1 に「会社名」 日本    セルに転入 textBox2 に「読み」   ニホン   セルに転入 というマクロを記述していますがこの時、 タナカ ススム の左の一文字 「タ」をtextBox3で取りたいのですが textBox3にはどんなマクロを記述すればいいかご指導願えませんでしょうか。 ※念のためtextBox2のマクロはそのままにしておきたいです。 textBox2には下記のマクロです。 '[読み]ボタンクリック時の処理 Private Sub cmdYomi_Click() Dim Ret As Long Dim strPhonetic As String '会社名が入力されていない場合にはプロシージャを抜ける If textKaisha.Value = "" Then Exit Sub 'ふりがなの第一候補を取得 strPhonetic = Application.GetPhonetic(textKaisha.Value) Do '取得したふりがなの候補で確定するかどうかをメッセージボックスで確認 Ret = MsgBox(strPhonetic & vbCrLf & vbCrLf & _ "確定しますか?", vbYesNoCancel) If Ret = vbYes Then '確定の場合には半角文字に変換してテキストボックスに格納 textYomi.Value = StrConv(strPhonetic, vbNarrow) ElseIf Ret = vbNo Then '[いいえ]ボタンを選択した場合は、次のふりがな候補を取得 strPhonetic = Application.GetPhonetic() '次の候補がなければループをぬける If strPhonetic = "" Then MsgBox "次の候補はありません" Exit Do End If End If 'ふりがな候補確定、またはキャンセルの場合は、ループを抜ける Loop While Ret = vbNo End Sub '[会社名]テキストボックスから他へフォーカスが移ったときの処理 Private Sub textKaisha_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim strTemp As String If textKaisha.Value <> "" Then 'ふりがなの第一候補を取得 strTemp = Application.GetPhonetic(textKaisha.Value) 'ふりがなを半角文字に変換して[会社名よみ]テキストボックスへ格納 textYomi.Value = StrConv(strTemp, vbNarrow) End If End Sub

  • Excel VBA「If else」の使い方

    Excelで管理台帳を作っています コマンドボタンをクリックすると、元データ「受給者情報」シートから今月利用終了となる人のリストを「利用終了者」シートに抽出できるようにしています 正しい作り方ではないのかもしれませんが、これでちゃんと抽出できているから抽出自体はこれでも問題ないと思います(^_^;) それはいいのですが、対象となる人がいない場合、抽出先の「利用終了者」シートにはタイトル行しか出ません。 それでも構わないのですが、できたら抽出データがない場合(A2セルより下のデータがない場合)は、「今月で終了の利用者はいません」とメッセージを出し、「top_page」シートに移動させたいのです そのやり方がうまくいきません 現時点はこのように入れています Private Sub CommandButton2_Click() Worksheets("利用終了者").Select Worksheets("利用終了者").Range("A:M").Clear With Worksheets("受給者情報") .Range("A:M").Copy Worksheets("利用終了者").Range("A1") .Range("A:Q").AdvancedFilter _ Action:=xlFilterCopy, _ criteriarange:=.Range("U1:V3"), _  CopyToRange:=Worksheets("利用終了者").Range("A:M"), _ unique:=False End With MsgBox "今月末で終了の利用者です!", vbOKOnly + vbInformation, "確認" If MsgBox("印刷しますか?", vbYesNo + vbQuestion, "印刷") = vbNo Then Exit Sub End If Worksheets("利用終了者").PrintOut Sheets("top_page").Select Range("a1").Select End Sub If elseを使うんだろうな、というのは何となくわかるのですが、どこにどう入れたらちゃんと反応するのかわかりません。 一度、  (前略) If Application.CountA(Range("A2")) = 0 Then MsgBox "今月末で終了の利用者はいません", vbOKOnly + vbInformation, "確認" Else MsgBox "今月末で終了の利用者です!", vbOKOnly + vbInformation, "確認" If MsgBox("印刷しますか?", vbYesNo + vbQuestion, "印刷") = vbNo Then Exit Sub End If Worksheets("利用終了者").PrintOut End If Sheets("top_page").Select Range("a1").Select End Sub と入れてみたのですが、これだと2行目以降もデータがあっても、「今月末で終了の利用者はいません」となってしまいます 2行目以降にデータがある場合は「今月末で終了の利用者です!」とメッセージボックスを出し、2行目以降にデータがない場合は「今月末で利用終了の利用者はいません」とメッセージボックスを出したいです そのやり方を教えてください。お願いします ちなみにバージョンはExcel2010です

  • Accessフォームの作成

    Accessで作成されているシステムの ファイル取り込みフォームにある実行ボタンを押下すると、 下記のメッセージが表示されます。 「select case に対応する case がみつからない。」 どこかで指定しないといけないのでしょうか? Private Sub Cmd実行_Click() On Error GoTo Err Dim StrSql As String Dim IntNDCnt As Integer Dim IntNTCnt As Integer '確認メッセージの出力 If MsgBox("処理を開始します。よろしいですか?", vbInformation + vbYesNo, "データ取込処理") = vbNo Then Exit Sub End If '対象データ別の処理実行 Select Case Me.Cmb対象.ListIndex Case -1 'エラー MsgBox "読込むデータを指定してください", vbCritical, "データ取込処理" Exit Sub Case 0 '全データ If F_手数料明細読込() = False Then Exit Sub End If If F_奨励金読込() = False Then Exit Sub End If If F_減額読込() = False Then Exit Sub End If If F_預り金読込() = False Then Exit Sub End If Case 1 '手数料データ If F_手数料明細読込() = False Then Exit Sub End If Case 2 '奨励金データ If F_奨励金読込() = False Then Exit Sub End If Case 3 '減額データ If F_減額読込() = False Then Exit Sub Case 4 '預り金データ If F_預り金読込() = False Then Exit Sub End If End Select 今は、Case 4が黄色に反転します。

  • IFの使い方

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim ANS As Integer ANS = MsgBox("Aをクリアしてもいいですか?", _ vbYesNoCancel + vbInformation, "クリア実行") If Sheets("A").Range("6D").Value <> "" Then Select Case ANS Case vbYes Sheets("営業確認").Range("b6:e1000,g6:k1000").Select Selection.ClearContents Sheets("入力").Select MsgBox "クリアしました" Case vbNo MsgBox "キャンセル" Case Else MsgBox "中止します" End Select Else End If End Sub 説明 (1)『A』というシートのセル『D6』に値が残っていれば メッセージボックスを出す。 (2)メッセージボックスはyes,no,cancelボタンがある (3)YESなら指定したセルの値を消す (4)NOなら消さない (5)キャンセルなら(3)、(4)以外 (6)『A』の『D6』に値がなければメッセージは出ない 上記のようにマクロを組みましたが、IFの所がエラーになってしまいます。

  • エクセル IF について!

    UserForm上にTextBoxとコマンドボタンがあり、TextBoxに数字を入れコマンドボタンをクリックすると'A.xlsをセットしてAシートの使用行を格納し検索して他のTextBoxにも反映させていくやり方でマクロを記述しています。そこでTextBoxに入力した数字がない場合はMsgBox”この数字はありません”という形にしたいのですが・・・どのようにすれば良いのか教えて下さい。 If Me.Controls("TextBox1" & Cnt).Value = "" Then MsgBox "呼出したい数字を入力して下さい" Exit Sub End If Set wbMyBook = Workbooks(ThisWorkbook.Name) If MsgBox("以前の記録を呼び戻しますか?", vbOKCancel) = vbOK Then Application.ScreenUpdating = False strMyBookPath = ThisWorkbook.Path If Dir(strMyBookPath & "\" & k1Name) <> "" Then 'あった場合そのブックが空いているか確認する。 flag = False For Each wb In Workbooks '開いていればTrue,開いていなければFalseを設定 If wb.Name = k1Name Then flag = True Exit For End If Next wb 'ブックが開いていなかった場合、ブックを開ける。 If flag = False Then Workbooks.Open strMyBookPath & "\" & k1Name End If Set k1 = Workbooks(k1Name) Set SH1 = k1.Worksheets("Sheet1") Else MsgBox WDName & "が存在していません。設置してください。", vbExclamation, "確認してください" Exit Sub End If lngYcnt_K = SH1.UsedRange.Rows.Count flag = False For lng = 1 To lngYcnt_K If CStr(TextBox1.Text) = CStr(SH1.Cells(lng, 1)) Then flag = True lngNumber = lng Exit For End If Next lng If flag = True Then TextBox3.Value = SH1.Cells(lngNumber, 2) '氏名 End If If SH1.Cells(lngNumber, 3) = "男" Then OptionButton1.Value = True ElseIf SH1.Cells(lngNumber, 3) = "女" Then OptionButton2.Value = True Else OptionButton1.Value = True OptionButton2.Value = False End If MsgBox " 記録を呼び戻しました" Else MsgBox"確認必要"⇒ここにもし数字が違っていたら表示させたいのですが・・・ End If MsgBox " 以前に記録しましたか?" Application.DisplayAlerts = False k1.Close saveChanges:=True Application.DisplayAlerts = True '-------------------------------------------------------------------------- '画面更新ON Application.ScreenUpdating = False End Sub

  • Excel VBAで検索(Win2000 Excel2000)

    現在、下記のようなコードを書いています。データテーブルの縦と横の検索値を探してその列数と行数を返したいのですが、下記の Sub検索1 と Sub検索2 を1つのSubで実行させるにはどうしたらよいのでしょうか?よろしくお願い致します。 ----------------------------------------- Sub 検索1() Worksheets("Data").Activate Dim x As Integer For x = 3 To 22 If Cells(2, x).Value >= 12 Then MsgBox x Exit Sub End If Next MsgBox "見つかりません" End Sub --------------------------------------------- Sub 検索2() Worksheets("Data").Activate Dim i As Integer For i = 4 To 42 If Cells(i, 2).Value = "A" Then MsgBox i Exit Sub End If Next MsgBox "見つかりません" End Sub

専門家に質問してみよう