トップ   新規 一覧 単語検索   ヘルプ   最終更新のRSS

Excel VBA 自作関数 のバックアップ(No.1)


Excel VBA(仮)?

自作関数

位置指定のコンテンツをクリアする

  • サブルーチン名:s_clearContentRange
  • 引数:消したいセルの開始列、開始行

#ref(): File not found: "Sub_clearContentRange.PNG" at page "Excel VBA 自作関数"

'--------------------------------------------------------------------
' クリアコンテンツ(最終行取得→指定のセルまでをクリア)
'--------------------------------------------------------------------
Sub s_clearContentRangeRow(iStartCol, iStartRow)
   Dim iLogRow As Integer
   
   'クリアしたい位置の最終行を知る(下から最終行取得)
    iLogRow = Sheet1.Cells(Rows.Count, iStartCol).End(xlUp).Row
   
   'データ最終行と消したくない行データ(タイトルなど、ここでは「ログ出力」)が一致した場合
   'つまり消すデータがない
   If (iLogRow = iStartRow) Then
       Exit Sub
   '開始位置までのデータの値のみクリアする
   Else
       iLogRow = iLogRow - (iStartRow + 1)
   End If
   Sheet1.Range(Cells(iStartRow + 1, iStartCol), Cells(iStartRow + 1 + iLogRow, iStartCol)).ClearContents
   
End Sub

ログ出力をする

  • サブルーチン名:s_setLog(strMsg)
  • 引数:出力したいメッセージ
    '--------------------------------------------------------------------
    ' ログを書く
    '--------------------------------------------------------------------
    cnsLogStartRow:ログ出力開始位置(行)
    
    Sub s_setLog(strMsg)
       Dim iLogRow As Integer
       
       'ログの位置を知る(下から最終行取得)
       iLogRow = Sheet1.Cells(Rows.Count, cnsLogStartCol).End(xlUp).Row
       iLogRow = iLogRow - cnsLogStartRow + 1
       Sheet1.Cells(cnsLogStartRow + iLogRow, cnsLogStartCol) = strMsg
    
    End Sub

エラーハンドリング

  • 実行時エラー
  • サブルーチン名:systemErr
  • 引数:エラーNo, エラー詳細, エラーが起きたサブルーチン
       '--------------------------------------------------------------------
       ' 実行時エラー処理
       '--------------------------------------------------------------------
       ' 実行時エラー時のエラーメッセージ出力
       Public Function systemErr(ByVal errNumber As Integer, _
                                 ByVal errDescription As String, _
                                 ByVal errProcedure As String) As Integer
           Dim ERR_MSG_01  As String
           Dim strErrMessage As String 'エラーメッセージ
           Dim intRet As Integer
           Dim ERR_MSG_TITLE   As String
           ERR_MSG_TITLE = "実行時エラー"
           ERR_MSG_01 = "システムエラーが発生しました。"
       
           strErrMessage = ERR_MSG_01 & Chr(13) & Chr(10) & _
                           "エラー番号:" & str(errNumber) & Chr(13) & Chr(10) & _
                           "エラーメッセージ:" & errDescription & Chr(13) & Chr(10) & _
                           "エラー発生箇所:" & errProcedure
           Debug.Print strErrMessage
       
           systemErr = MsgBox(strErrMessage, vbCritical + vbOKOnly, ERR_MSG_TITLE)
       
       End Function
  • 呼び出し元
       On Error GoTo ErrHandler
       --省略(処理)--        
       ErrHandler:
           '実行時エラー
           intRet = systemErr(Err.Number, Err.Description, "f_getFileName")
           '異常終了
           f_getFileName = True
           GoTo ExitHandler

日付操作

Sub test()

   Dim stryymmdd As String
   Dim dDate   As Date
   
   stryymmdd = "100210"
   
   dDate = CDate(Format(stryymmdd, "@@@@/@@/@@"))
   MsgBox Format(dDate, "yyyymmdd")

End Sub