【UiPath特集】Case 2:変数の「型」エラー完全攻略~「1 + 1 = 11」になる謎を解く~

こんにちは!UiPath メンターです。

あなたはこんな経験ありませんか?
Excelから「100」という数字を読み込んで、それに「50」を足そうとしたら……

  • パターンA: エラーが出て止まる(「String から Double への変換はできません」など)
  • パターンB: 「10050」という謎の数字になる(足し算じゃなくて、文字がくっついただけ!)

これは、ロボットがデータの「種類(型)」に非常にうるさい性格だからです。
人間なら「”100″ も 100 も同じでしょ?」と解釈してくれますが、ロボットにとっては「文字の”100″」と「数値の100」は、水と油くらい違うものなのです。

今回は、この「変数の型」の変換方法(キャスト)をマスターしましょう。

診察1:まずは「型」の種類を知ろう

UiPathでよく使う型は、主に以下の4つです。

型の名前 表記 中身の例 特徴
文字列 String "あいう" "123" 文字として扱う。計算できない。ダブルクォーテーションで囲む。
整数 Int32 123 -50 計算できる。少数は扱えない。
真偽値 Boolean True False YESかNOか。チェックボックスの状態など。
データテーブル DataTable 表データ全体 Excelなどの表そのもの。

処方箋A:数字を「文字」にしたいとき(.ToString)

症状:
計算結果(Int32)を、メッセージボックスで表示しようとしたらエラーになる。
「String 型への変換は許可されていません」など。

治療法:
変数の後ろに .ToString を付ける。

int_Goukei.ToString

これで、数値の 100 が、文字の "100" に変身します。
メッセージボックスや、Web画面への入力(Type Into)は「文字」しか受け付けないので、この変換は必須です。

処方箋B:文字を「数字」にしたいとき(Cint)

症状:
WebやExcelから取ってきた数字(String)を使って足し算をしたら、文字が連結されてしまった。
"100" + "50" → 結果 "10050"

治療法:
変数を Cint( ) で囲む。

Cint(str_Kingaku) + 50

Cint は “Convert to Integer” の略です。
これで文字の "100" が、数値の 100 に変身し、正しく計算(150)できるようになります。

💡 メンターからのアドバイス:少数の場合は?

Cint は整数(Integer)用です。
もし「消費税 10% (0.1)」や「平均点 85.5」のような少数を扱いたい場合は、CDbl( )Double.Parse( ) を使います。
変数の型も Double を選びましょう。

診察2:Excelのデータは「Object」になりがち

「繰り返し(For Each Row)」の中で、CurrentRow("金額") を使う時によくあるエラーです。

Option Strict On で ‘Object’ から ‘Integer’ への暗黙の変換はできません。

これは、「Excelのセルの中身は何が入ってるか分からない(Object)から、いきなり計算に使っちゃダメ!」と怒られています。

正しい書き方

一度 .ToString で文字にしてから、Cint で数値にするのが一番丁寧で確実な方法です。

Cint(CurrentRow("金額").ToString)

この呪文はセットで覚えてしまいましょう!

まとめ:型の変換マップ

迷った時はこの表を見てください。

  • 数値/なんでも → 文字にする: .ToString
  • 文字 → 整数にする: Cint( )
  • 文字 → 日付にする: Cdate( ) または DateTime.Parse( )

⚠️ つまづきポイント:空っぽ(Null)だとエラーになる

Excelのセルが空欄の場合、.ToStringCint をしようとするとエラーで止まってしまうことがあります。
不安な場合は、計算する前に「If (条件分岐)」を使って、「空欄じゃなかったら計算する」というガードを入れるのがプロの技です。

次回はCase 3、「ファイルが使用中です」エラー
「さっき閉じたはずなのにExcelが開けない!」「プロセスって何?」という、誰もが通るゾンビプロセスの怪現象を解決します!

タイトルとURLをコピーしました