Step31 一覧シートを作成し請求書No.を検索する: Excel請求書

請求書データを登録する一覧シートを作成し、一覧シートに請求書No.が登録されているかどうか検索します。見つかれば行番号を返します。

検索はFind関数を使います。
Set trange = Worksheets("一覧").Columns(3).Find(What:=sv, LookIn:=xlValues, LookAt:=xlWhole)
・What : 検索するデータ
・LookIn : xlValuesで値を指定
・LookAt : xlWholeで全てが一致するセルを検索

trange Is Nothingで判定し見つかれば、trange.Rowで行番号を取得します。



Homeに戻る > Excelでアプリケーションソフト3 > 請求書アプリ

作成画面

■請求書一覧シート

下が作成した一覧です。 セル位置と列幅は下記の通りです。
  • 日付 : B4セル 幅10.63(90ピクセル)
  • 請求書No. : C4セル 幅14.38(120ピクセル)
  • 品名コード : D4セル 幅8.75(75ピクセル)
  • 品番 : E4セル 幅18.13(150ピクセル)
  • 品名 : F4セル 幅21.88(180ピクセル)
  • 数量 : G4セル 幅6.88(60ピクセル)
  • 単位 : H4セル 幅6.88(60ピクセル)
  • 単価 : I4セル 幅14.38(120ピクセル)
  • 金額 : J4セル 幅14.38(120ピクセル)
請求書一覧シート

■請求書No.の検索

ブックが閉じる前のイベント内に、MyFindNumber(Worksheets("請求書").Range("x6"))を追加します。
請求書No.を引数にしています。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim nRet As Long
    
    If Worksheets("請求書").Range("x6") = "" Then
        nRet = MsgBox("請求書No.が入力されていない為、一覧に登録できません。" & vbCrLf & _
        "登録しないで終了してもよろしいですか?", vbYesNoCancel)
        
        If nRet <> vbYes Then
            Range("x6").Activate
            Cancel = True
            Exit Sub
        End If
    Else
        If MyFindNumber(Worksheets("請求書").Range("x6")) = 0 Then
        End If
    End If
End Sub

■Findメソッドで検索

作成した検索プロシージャです。
見つかった場合はその行番号が、見つからなかった場合は0が返ります。

Private Function MyFindNumber(sv As String) As Long
    Dim trange As Range
             
    MyFindNumber = 0
    Set trange = Worksheets("一覧").Columns(3).Find(What:=sv, _
        LookIn:=xlValues, LookAt:=xlWhole)
    If Not trange Is Nothing Then
         MyFindNumber = trange.Row
    End If
End Function

[関連リンク]

Findメソッド
検索
基本的な検索方法

Homeに戻る > Excelでアプリケーションソフト3 > 請求書アプリ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved