VB6でよく使う関数一覧と使い方
VB6で作られた業務システムを確認していると、文字列の切り出し、日付計算、数値変換、入力チェック、ファイル存在確認など、さまざまな場面で標準関数が使われています。
既存システムの改修では、関数名だけを見て「文字列を切り出している」「日付を取得している」と判断するだけでは不十分です。
たとえば、Mid関数で取り出している桁位置が商品コードの分類を表していたり、Round関数の丸め方が請求金額に影響していたり、DateAdd関数が締め処理の日付計算に使われていたりすることがあります。
VB6の関数は、単なる部品ではなく、古い業務システムの中で業務ルールと結びついていることが少なくありません。
この記事では、VB6でよく使われる関数を一覧で整理し、文字列、数値、日付、型変換、判定、ファイル操作などの使い方と、既存システムを改修・移行するときの注意点を解説します。
VB6の関数とは
VB6の関数とは、値を取得したり、加工したり、判定したりするために使う処理です。
たとえば、文字列の長さを取得するLen、左から文字を取り出すLeft、日付を加算するDateAdd、数値かどうかを判定するIsNumericなどがあります。
VB6の古い業務システムでは、次のような場面で関数がよく使われます。
入力された文字列の前後の空白を削除する。
得意先コードや商品コードの一部を取り出す。
伝票番号の末尾を取得する。
日付から年・月・日を取り出す。
締め日や支払予定日を計算する。
文字列を数値に変換する。
CSVファイルが存在するか確認する。
Nullや空文字を判定する。
一つひとつの関数は小さな処理ですが、既存システムでは、その使われ方が業務の動きに直結していることがあります。
VB6でよく使う関数一覧表
VB6でよく使われる関数を、用途別に一覧で整理します。
実際のVB6システムでは、標準関数だけでなく、独自に作成されたFunctionや外部部品の関数が混在していることもあります。ここでは、既存VB6コードで見かけることが多い一般的な関数を中心にまとめます。
| 分類 | 関数名 | 主な用途 | 使用例 | 改修時の確認ポイント |
|---|---|---|---|---|
| 文字列 | Len | 文字数を取得する | Len(strName) | 未入力チェックや固定長チェックで使われることが多い |
| 文字列 | Left | 左から指定文字数を取り出す | Left(code, 3) | コード体系の先頭桁が業務区分になっている場合がある |
| 文字列 | Right | 右から指定文字数を取り出す | Right(code, 4) | 末尾の番号、年月、枝番取得で使われやすい |
| 文字列 | Mid | 指定位置から文字を取り出す | Mid(code, 2, 3) | 桁位置が業務ルールになっている場合は要注意 |
| 文字列 | InStr | 指定文字の位置を検索する | InStr(text, “-“) | 戻り値が0の場合の処理を確認する |
| 文字列 | InStrRev | 後ろから文字位置を検索する | InStrRev(path, “”) | ファイル名や拡張子の取得で使われることがある |
| 文字列 | Replace | 文字列を置換する | Replace(tel, “-“, “”) | 電話番号、郵便番号、CSV整形などで使われやすい |
| 文字列 | Trim | 前後の空白を削除する | Trim(name) | 入力値、CSV取込、検索条件でよく使われる |
| 文字列 | LTrim | 左側の空白を削除する | LTrim(text) | 固定長データの処理で使われることがある |
| 文字列 | RTrim | 右側の空白を削除する | RTrim(text) | 固定長ファイルや古いDB項目で使われやすい |
| 文字列 | UCase | 英字を大文字に変換する | UCase(code) | コード比較前の統一処理で使われることがある |
| 文字列 | LCase | 英字を小文字に変換する | LCase(mail) | メールアドレスやID比較で使われることがある |
| 文字列 | StrComp | 文字列を比較する | StrComp(a, b) | 大文字小文字の比較方法に注意 |
| 文字列 | Space | 指定数の空白を作る | Space(10) | 固定長ファイルや帳票整形で使われる |
| 文字列 | String | 指定文字を繰り返す | String(10, “-“) | 罫線、固定長整形、初期化処理で使われる |
| 文字列 | Split | 文字列を分割する | Split(csvLine, “,”) | CSV処理ではダブルクォートやカンマを含む値に注意 |
| 文字列 | Join | 配列を文字列に結合する | Join(arr, “,”) | CSV出力やログ出力で使われることがある |
| 文字列 | StrReverse | 文字列を逆順にする | StrReverse(text) | 通常業務では少ないが特殊処理で使われる場合がある |
| 文字列 | Asc | 文字コードを取得する | Asc(“A”) | 全角・半角判定や文字種チェックで使われることがある |
| 文字列 | AscB | バイト単位の文字コードを取得する | AscB(text) | 旧システムのバイト処理で注意 |
| 文字列 | AscW | Unicode文字コードを取得する | AscW(text) | 文字コード差異の確認が必要な場合がある |
| 文字列 | Chr | 文字コードから文字を返す | Chr(13) | 改行コードや制御文字で使われる |
| 文字列 | ChrB | バイト文字を返す | ChrB(13) | バイナリ処理や古い通信処理で注意 |
| 文字列 | ChrW | Unicode文字を返す | ChrW(13) | Unicode前提の処理か確認する |
| 数値 | Abs | 絶対値を取得する | Abs(num) | マイナス値を許容する業務か確認する |
| 数値 | Sgn | 符号を取得する | Sgn(num) | 正・負・ゼロで処理分岐している場合がある |
| 数値 | Int | 小数点以下を切り捨てる | Int(value) | 負数の場合の動きに注意 |
| 数値 | Fix | 小数点以下を切り捨てる | Fix(value) | Intとの違いを確認する |
| 数値 | Round | 指定桁で丸める | Round(value, 0) | 金額計算では丸め方法の確認が重要 |
| 数値 | Rnd | 乱数を取得する | Rnd | 採番やテスト用処理に残っていないか確認 |
| 数値 | Sin | サインを求める | Sin(x) | 一般業務では少ないが計算処理で使われる場合がある |
| 数値 | Cos | コサインを求める | Cos(x) | 技術計算系のVB6で使われることがある |
| 数値 | Tan | タンジェントを求める | Tan(x) | 特殊計算処理で使われる |
| 数値 | Atn | アークタンジェントを求める | Atn(x) | 技術計算系で使われることがある |
| 数値 | Sqr | 平方根を求める | Sqr(num) | マイナス値が入る可能性を確認 |
| 数値 | Exp | 指数を求める | Exp(num) | 特殊な計算処理で使われる |
| 数値 | Log | 自然対数を求める | Log(num) | 0以下の値に注意 |
| 日付 | Date | 現在日付を取得する | Date | 処理日基準か、業務日基準か確認 |
| 日付 | Time | 現在時刻を取得する | Time | ログや処理時刻で使われる |
| 日付 | Now | 現在日時を取得する | Now | 更新日時、ログ、履歴管理で使われやすい |
| 日付 | Year | 年を取得する | Year(dt) | 年度処理では単純な年と違う場合がある |
| 日付 | Month | 月を取得する | Month(dt) | 月次処理や請求処理で注意 |
| 日付 | Day | 日を取得する | Day(dt) | 締め日、月末判定で使われることがある |
| 日付 | Hour | 時を取得する | Hour(dt) | 時刻制御やログ分析で使われる |
| 日付 | Minute | 分を取得する | Minute(dt) | 処理時刻判定で使われる |
| 日付 | Second | 秒を取得する | Second(dt) | ログやファイル名作成で使われる |
| 日付 | DateAdd | 日付を加算・減算する | DateAdd(“d”, 7, dt) | 支払予定日、納期、締め処理で要確認 |
| 日付 | DateDiff | 日付の差を取得する | DateDiff(“d”, dt1, dt2) | 経過日数、年齢、期限判定で使われる |
| 日付 | DatePart | 日付の一部を取得する | DatePart(“m”, dt) | 週番号や四半期取得で注意 |
| 日付 | DateSerial | 年月日から日付を作る | DateSerial(y, m, d) | 月末日計算で使われることがある |
| 日付 | TimeSerial | 時分秒から時刻を作る | TimeSerial(h, m, s) | 時刻範囲判定で使われる |
| 日付 | DateValue | 文字列から日付を取得する | DateValue(text) | 曖昧な日付形式に注意 |
| 日付 | TimeValue | 文字列から時刻を取得する | TimeValue(text) | 入力形式によるエラーに注意 |
| 日付 | Weekday | 曜日を数値で取得する | Weekday(dt) | 休日判定、締め日調整で使われることがある |
| 日付 | MonthName | 月名を取得する | MonthName(1) | 画面表示や帳票で使われる |
| 日付 | WeekdayName | 曜日名を取得する | WeekdayName(1) | 表示用か業務判定用か確認 |
| 変換 | CStr | 文字列型へ変換する | CStr(num) | Nullが入るとエラーになる可能性がある |
| 変換 | CInt | 整数型へ変換する | CInt(value) | 小数、空文字、Nullに注意 |
| 変換 | CLng | 長整数型へ変換する | CLng(value) | 伝票番号や金額で桁あふれに注意 |
| 変換 | CSng | 単精度小数へ変換する | CSng(value) | 精度が必要な計算には注意 |
| 変換 | CDbl | 倍精度小数へ変換する | CDbl(value) | 小数計算や端数処理を確認 |
| 変換 | CCur | 通貨型へ変換する | CCur(value) | 金額計算では丸めと桁数に注意 |
| 変換 | CDate | 日付型へ変換する | CDate(text) | 日付形式が環境依存にならないか確認 |
| 変換 | CBool | Boolean型へ変換する | CBool(value) | 0以外の値の扱いを確認 |
| 変換 | CByte | Byte型へ変換する | CByte(value) | 0〜255の範囲を超えないか確認 |
| 変換 | CVar | Variant型へ変換する | CVar(value) | 型が曖昧になりやすいので注意 |
| 変換 | Val | 文字列を数値として読み取る | Val(text) | 途中まで数値なら変換される点に注意 |
| 変換 | Str | 数値を文字列に変換する | Str(num) | 正数の先頭に空白が入る点に注意 |
| 変換 | Hex | 16進数文字列へ変換する | Hex(num) | 色、コード、ビット処理で使われる |
| 変換 | Oct | 8進数文字列へ変換する | Oct(num) | 古いコード変換処理で使われることがある |
| 書式 | Format | 指定書式で文字列化する | Format(dt, “yyyy/mm/dd”) | 日付、金額、番号整形で多用される |
| 書式 | FormatDateTime | 日時を書式化する | FormatDateTime(dt) | 画面表示用かデータ保存用か確認 |
| 書式 | FormatNumber | 数値を書式化する | FormatNumber(num, 2) | 表示用の処理か計算用の処理か確認 |
| 書式 | FormatCurrency | 通貨形式にする | FormatCurrency(price) | 表示用であり、計算値とは分けて考える |
| 書式 | FormatPercent | パーセント形式にする | FormatPercent(rate) | 率の持ち方が0.1か10か確認 |
| 判定 | IsNumeric | 数値として扱えるか判定する | IsNumeric(text) | 入力チェックでよく使われる |
| 判定 | IsDate | 日付として扱えるか判定する | IsDate(text) | 曖昧な日付でもTrueになる場合がある |
| 判定 | IsNull | Nullか判定する | IsNull(value) | DB項目やVariantでよく使われる |
| 判定 | IsEmpty | Emptyか判定する | IsEmpty(value) | Variantの初期状態確認で使われる |
| 判定 | IsArray | 配列か判定する | IsArray(value) | 動的配列やVariant配列で使われる |
| 判定 | IsObject | オブジェクトか判定する | IsObject(value) | COMや外部部品処理で使われる |
| 判定 | IsError | エラー値か判定する | IsError(value) | 特殊な戻り値処理で使われることがある |
| 判定 | VarType | 変数の型を取得する | VarType(value) | Variantの中身を確認する処理で使われる |
| 判定 | TypeName | 型名を文字列で取得する | TypeName(obj) | デバッグや分岐処理で使われることがある |
| 条件 | IIf | 条件によって値を返す | IIf(flg, “OK”, “NG”) | 両方の式が評価される点に注意 |
| 条件 | Choose | 番号に応じて値を返す | Choose(n, “A”, “B”) | 番号が範囲外になる場合に注意 |
| 条件 | Switch | 条件に応じて値を返す | Switch(a=1,”A”,a=2,”B”) | 複雑な条件では読みづらくなる |
| 配列 | Array | 配列を作成する | Array(“A”, “B”) | Variant配列になる点を確認 |
| 配列 | LBound | 配列の最小添字を取得する | LBound(arr) | 0始まりか1始まりか確認 |
| 配列 | UBound | 配列の最大添字を取得する | UBound(arr) | ループ処理で範囲外エラーに注意 |
| 配列 | Filter | 条件に合う文字列配列を返す | Filter(arr, “A”) | 部分一致の扱いを確認 |
| ファイル | Dir | ファイルやフォルダの存在を確認する | Dir(path) | 共有フォルダ、権限、パス表記に注意 |
| ファイル | FileLen | ファイルサイズを取得する | FileLen(path) | ファイル存在確認とセットで使う |
| ファイル | FreeFile | 空きファイル番号を取得する | FreeFile | Openステートメントと一緒に使われる |
| ファイル | EOF | ファイル終端を判定する | EOF(fileNo) | ループ終了条件で使われる |
| ファイル | LOF | 開いているファイルのサイズを取得する | LOF(fileNo) | バイナリ処理や読込処理で使われる |
| ファイル | Loc | 現在の読込位置を取得する | Loc(fileNo) | 古いファイル処理で使われることがある |
| ファイル | Seek | ファイル位置を取得・設定する | Seek(fileNo) | ランダムアクセス処理で注意 |
| ファイル | GetAttr | ファイル属性を取得する | GetAttr(path) | 読み取り専用、隠しファイル判定で使われる |
| 環境 | CurDir | 現在のフォルダを取得する | CurDir | 実行フォルダ前提の処理に注意 |
| 環境 | Environ | 環境変数を取得する | Environ(“TEMP”) | ユーザー環境に依存する |
| 環境 | Command | 起動時引数を取得する | Command | バッチ起動や外部連携で使われる |
| 環境 | Timer | 午前0時からの秒数を取得する | Timer | 処理時間計測で使われる |
| 外部 | Shell | 外部プログラムを実行する | Shell(path) | セキュリティやパスの存在確認が必要 |
| 外部 | CreateObject | COMオブジェクトを作成する | CreateObject(“Excel.Application”) | Office連携や外部部品の依存に注意 |
| 外部 | GetObject | 既存オブジェクトを取得する | GetObject(, “Excel.Application”) | 起動済みアプリへの接続で使われる |
| 表示 | MsgBox | メッセージを表示する | MsgBox(“完了しました”) | 業務処理中の停止や確認メッセージに注意 |
| 入力 | InputBox | 入力ダイアログを表示する | InputBox(“入力してください”) | 業務システムでは簡易入力に使われる場合がある |
一覧表だけを見ると、どれも単純な関数に見えます。
しかし、既存VB6システムでは、これらの関数が画面入力、帳票出力、CSV連携、締め処理、金額計算、コード体系などに深く関係している場合があります。
そのため、関数名の意味だけでなく、どの業務処理の中で使われているかを確認することが重要です。
文字列操作でよく使う関数
VB6の既存システムで特によく見るのが、文字列操作の関数です。
たとえば、Len、Left、Right、Mid、InStr、Trim、Replaceなどです。
これらは、入力チェック、コード分解、CSV処理、帳票表示、ファイル名作成などでよく使われます。
たとえば、得意先コードの先頭2桁で分類を判定している場合、次のようなコードが使われていることがあります。
If Left(tokuisakiCode, 2) = "01" Then
MsgBox "法人得意先です。"
End If
この場合、Left関数そのものは単純ですが、先頭2桁の「01」が何を意味するかは業務ルールです。
また、商品コードの一部を取り出すためにMid関数が使われていることもあります。
bunruiCode = Mid(shohinCode, 3, 2)
このようなコードでは、「3文字目から2文字」が商品分類を意味している可能性があります。
既存システムを改修するときは、切り出している桁位置を安易に変えてはいけません。
InStrは、文字列の中に指定した文字が含まれているかを確認するためによく使われます。
If InStr(fileName, ".csv") > 0 Then
MsgBox "CSVファイルです。"
End If
InStrは、見つからない場合に0を返します。
そのため、戻り値が0の場合の処理があるかを確認することが大切です。
Trimは、入力値の前後の空白を削除するためによく使われます。
name = Trim(Text1.Text)
古いシステムでは、画面入力、CSV取込、固定長ファイル取込などで、空白が混ざることがあります。
Trimがあることで正常に処理できている場合もあるため、改修時に削除しないよう注意が必要です。
数値処理でよく使う関数
数値処理では、Abs、Int、Fix、Round、Valなどがよく使われます。
特に注意したいのは、金額計算や数量計算です。
Round関数は、数値を指定した桁数で丸めるために使われます。
kingaku = Round(tanka * suryo, 0)
このような処理は、請求金額、消費税、割引、原価計算などに影響する可能性があります。
金額計算では、単に「四捨五入している」と見るだけでなく、切り捨てなのか、切り上げなのか、四捨五入なのか、どのタイミングで丸めているのかを確認する必要があります。
IntとFixも注意が必要です。
どちらも小数点以下を処理する関数ですが、負数を扱う場合に結果が変わることがあります。
通常の販売管理では負数が少ないかもしれませんが、返品、値引き、マイナス在庫、調整伝票などでは負の値が出る場合があります。
Val関数もよく使われます。
suryo = Val(TextSuryo.Text)
Valは、文字列の先頭から数値として読める部分を数値に変換します。
そのため、”123ABC”のような文字列でも123として扱われることがあります。
入力チェックとして十分かどうかを確認せずに使うと、想定外の値を登録してしまう可能性があります。
日付・時刻でよく使う関数
VB6の業務システムでは、Date、Now、Year、Month、Day、DateAdd、DateDiffなどの日付関数がよく使われます。
日付処理は、画面表示だけでなく、締め処理、請求処理、納期計算、支払予定日、月次集計などに関係します。
たとえば、現在日付を取得する処理です。
syoriDate = Date
この場合、システム日付を処理日として使っています。
ただし、業務によっては「実際の処理日」ではなく「業務日付」「締め日」「対象年月」を使うべき場合があります。
DateAddは、日付を加算するために使われます。
shiharaiYoteiDate = DateAdd("d", 30, seikyuDate)
このような処理では、請求日から30日後を支払予定日にしています。
ただし、実際の業務では、末日締め翌月末払い、休日を避ける、月末日を維持するなど、より細かいルールがある場合があります。
DateDiffは、日付の差を求めるために使われます。
keikaNissu = DateDiff("d", uketsukeDate, Date)
期限超過、経過日数、滞留日数、年齢計算などで使われることがあります。
日付関数は、少しの変更でも業務結果が変わりやすいため、改修時は旧システムと結果を比較することが重要です。
型変換でよく使う関数
VB6では、CStr、CInt、CLng、CDbl、CDate、Valなどの型変換関数がよく使われます。
画面のTextBoxに入力された値は文字列として扱われます。
そのため、数値計算を行う前に数値型へ変換する処理が入っていることがあります。
suryo = CInt(TextSuryo.Text)
このようなコードでは、TextSuryo.Textが空文字や数値以外の場合、エラーになります。
そのため、通常はIsNumericなどで事前にチェックされているかを確認します。
If IsNumeric(TextSuryo.Text) = False Then
MsgBox "数量は数値で入力してください。"
Exit Sub
End If
suryo = CInt(TextSuryo.Text)
CLngは、伝票番号、ID、金額などで使われることがあります。
denpyoNo = CLng(TextDenpyoNo.Text)
ただし、伝票番号が先頭ゼロを含む場合、数値に変換すると先頭ゼロが消えます。
たとえば、”000123″を数値にすると123になります。
このような場合、伝票番号を数値として扱ってよいのか、文字列として保持すべきなのかを確認する必要があります。
CDateも注意が必要です。
nyukinDate = CDate(TextDate.Text)
日付形式が環境や入力形式に依存する場合、想定外の日付として解釈されることがあります。
日付変換では、入力形式を固定する、IsDateで確認する、旧システムと同じ処理結果になるかを見ることが大切です。
判定・入力チェックでよく使う関数
入力チェックでは、IsNumeric、IsDate、IsNull、IsEmptyなどがよく使われます。
IsNumericは、数値として扱えるかを判定します。
If IsNumeric(TextKingaku.Text) = False Then
MsgBox "金額は数値で入力してください。"
Exit Sub
End If
ただし、IsNumericでTrueになったからといって、業務上正しい値とは限りません。
金額であれば、マイナスを許可するのか。
数量であれば、小数を許可するのか。
伝票番号であれば、桁数が合っているのか。
コードであれば、先頭ゼロを保持する必要があるのか。
このような業務条件は、IsNumericだけでは判断できません。
IsDateも同じです。
If IsDate(TextDate.Text) = False Then
MsgBox "日付を入力してください。"
Exit Sub
End If
IsDateでTrueになる値でも、業務上は対象年月外、締め済み期間、未来日付などで登録できない場合があります。
IsNullは、データベース項目を扱うときによく使われます。
If IsNull(rs("TEL")) Then
tel = ""
Else
tel = rs("TEL")
End If
古いVB6システムでは、Null、空文字、0、Emptyが混在していることがあります。
改修時には、どの状態を未設定として扱っているのかを確認する必要があります。
ファイル・パス関連で使われる関数
VB6の業務システムでは、CSV取込、CSV出力、テキストファイル連携、固定長ファイル処理などでファイル関連の関数が使われます。
よく使われるのは、Dir、FreeFile、EOF、FileLenなどです。
Dirは、ファイルの存在確認でよく使われます。
If Dir(filePath) = "" Then
MsgBox "ファイルが存在しません。"
Exit Sub
End If
古いシステムでは、共有フォルダにあるCSVファイルを読み込む処理が多くあります。
その場合、ファイルの存在だけでなく、アクセス権限、ネットワーク接続、パスの変更、ファイル名ルールも確認する必要があります。
FreeFileは、空いているファイル番号を取得するために使われます。
fileNo = FreeFile
Open filePath For Input As #fileNo
EOFは、ファイルの終端まで読み込むために使われます。
Do Until EOF(fileNo)
Line Input #fileNo, lineText
Loop
CSV取込処理では、項目数、文字コード、改行コード、カンマを含む文字列、ダブルクォートの扱いなども確認が必要です。
VB6の古いファイル処理は、現在のWindows環境やサーバー構成でそのまま動かない場合があります。
特に、Cドライブ直下、固定パス、共有フォルダ、ネットワークドライブを前提にしている場合は注意が必要です。
書式設定でよく使う関数
Format関数は、VB6の既存システムで非常によく使われます。
日付、金額、番号、文字列の表示形式を整えるために使われます。
strDate = Format(Date, "yyyy/mm/dd")
strKingaku = Format(kingaku, "#,##0")
denpyoNo = Format(no, "000000")
特に注意したいのは、Formatが表示用なのか、業務データ生成用なのかです。
画面表示だけなら大きな問題になりにくい場合もありますが、CSV出力、帳票出力、外部システム連携に使われている場合は、桁数や書式の変更がそのまま連携エラーにつながります。
たとえば、伝票番号を6桁ゼロ埋めで出力している場合、Formatの書式を変更すると外部システム側で取り込めなくなる可能性があります。
denpyoNo = Format(123, "000000")
この結果は”000123″になります。
伝票番号や商品コードを数値として扱ってしまうと先頭ゼロが消えることがあるため、Formatで補っているケースもあります。
このような処理では、単に見た目を整えているだけでなく、業務連携上のルールになっている場合があります。
既存VB6システムで関数を確認するときのポイント
既存VB6システムで関数を確認するときは、関数の意味だけで判断しないことが重要です。
特に注意したいのは、次のような処理です。
文字列の切り出し。
数値の丸め。
日付の加算・差分計算。
型変換。
Null判定。
CSV取込・出力。
帳票表示用のFormat。
ファイル存在確認。
文字列の切り出しでは、Left、Right、Midが使われていることが多くあります。
ここで切り出している桁位置は、商品分類、得意先区分、伝票種別、年月、枝番などを表している場合があります。
数値の丸めでは、Round、Int、Fixが使われていることがあります。
金額計算、消費税計算、割引計算では、丸めのタイミングが変わるだけで結果が変わります。
日付処理では、DateAdd、DateDiff、DateSerialなどが使われます。
締め日、支払予定日、納期、月末日計算では、単純な日数加算だけではなく、業務独自のルールが含まれていることがあります。
Null判定では、IsNullや空文字チェックが使われます。
データベース項目がNullなのか、空文字なのか、0なのかによって処理結果が変わる場合があります。
このように、VB6の関数は小さな処理であっても、業務全体の動きに影響することがあります。
VB6からVB.NETへ移行する場合の関数の注意点
VB6からVB.NETへ移行する場合、同じ名前の関数が使えることもありますが、すべてをそのまま置き換えればよいわけではありません。
たとえば、文字列処理はVB.NETでもLeft、Right、Midのような関数を使える場合がありますが、.NETの文字列メソッドへ置き換えることもあります。
日付処理も、DateAddやDateDiffに相当する処理を使う場合がありますが、DateTime型の扱いを整理した方がよいケースもあります。
型変換では、CInt、CLng、CDateなどをそのまま使える場合もありますが、例外処理や入力チェックの考え方を見直す必要があります。
特に注意が必要なのは、旧システムと同じ結果になるかどうかです。
金額計算の丸め。
日付の加算。
月末日処理。
文字列の切り出し。
Nullの扱い。
先頭ゼロ付きコードの扱い。
CSV出力の書式。
これらは、移行時に差異が出やすい部分です。
自動変換でエラーが出なかったとしても、業務上の結果が同じとは限りません。
VB.NETへ移行する場合は、関数単位ではなく、画面、帳票、CSV、データベース更新結果を含めて確認する必要があります。
関数を含むVB6コードを改修するときの注意点
VB6コードを改修するときは、「関数を置き換えるだけ」で判断しない方が安全です。
たとえば、Mid関数の切り出し位置を変更する場合、その項目がどの画面、帳票、CSV、データベース項目に影響しているかを確認します。
Round関数を変更する場合は、請求金額、消費税、合計金額、端数処理、月次集計に影響がないかを確認します。
DateAddを変更する場合は、締め日、支払予定日、納期、期限超過判定に影響がないかを確認します。
Formatを変更する場合は、帳票の見た目だけでなく、CSV出力や外部連携ファイルに影響がないかを確認します。
特に、次のような関数は改修時に慎重に見るべきです。
Left、Right、Mid。
Round、Int、Fix。
DateAdd、DateDiff、DateSerial。
CInt、CLng、CDate。
Val、IsNumeric、IsDate。
Format。
Dir、FreeFile、EOF。
これらは、既存VB6システムの中で業務処理と結びついていることが多いためです。
まとめ
VB6には、文字列、数値、日付、型変換、判定、ファイル操作などで使える多くの関数があります。
Len、Left、Right、Mid、InStr、Trim、Replaceなどの文字列関数は、コードの切り出しや入力値の整形でよく使われます。
Round、Int、Fix、Valなどの数値関数は、金額計算や数量処理で注意が必要です。
Date、Now、DateAdd、DateDiff、Year、Month、Dayなどの日付関数は、締め処理や請求処理に影響することがあります。
CStr、CInt、CLng、CDateなどの型変換関数は、入力値やデータベース項目の扱いに関係します。
既存VB6システムを改修するときは、関数名だけを見るのではなく、その関数がどの業務処理で使われ、どの画面、帳票、CSV、データベースに影響しているかを確認することが重要です。
また、VB6からVB.NETへ移行する場合も、関数の置き換えだけで完了するわけではありません。
旧システムと同じ計算結果、同じ日付処理、同じ文字列加工、同じ出力形式になるかを確認する必要があります。
VB6の関数一覧は、単なるリファレンスとしてだけでなく、古い業務システムを読み解くための手がかりとして活用するとよいでしょう。