こんにちは!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("金額") を使う時によくあるエラーです。
これは、「Excelのセルの中身は何が入ってるか分からない(Object)から、いきなり計算に使っちゃダメ!」と怒られています。
正しい書き方
一度 .ToString で文字にしてから、Cint で数値にするのが一番丁寧で確実な方法です。
Cint(CurrentRow("金額").ToString)
この呪文はセットで覚えてしまいましょう!
まとめ:型の変換マップ
迷った時はこの表を見てください。
- 数値/なんでも → 文字にする:
.ToString - 文字 → 整数にする:
Cint( ) - 文字 → 日付にする:
Cdate( )またはDateTime.Parse( )
⚠️ つまづきポイント:空っぽ(Null)だとエラーになる
Excelのセルが空欄の場合、.ToString や Cint をしようとするとエラーで止まってしまうことがあります。
不安な場合は、計算する前に「If (条件分岐)」を使って、「空欄じゃなかったら計算する」というガードを入れるのがプロの技です。
次回はCase 3、「ファイルが使用中です」エラー。
「さっき閉じたはずなのにExcelが開けない!」「プロセスって何?」という、誰もが通るゾンビプロセスの怪現象を解決します!