目次
PythonとVBAのコードを比較する
こんにちは。伊川(@naonaoke)です。
今回は、上の記事で紹介したコードをVBAで再現します。
前回pythonでは、税抜きの運賃を入力させて、税込の運賃が2,000円以上ならば、送料は無料します。
しかし、税込金額が、2,000円以下の場合は、350円の送料が加算されます。
このような処理を実行しました。
今回のお題
- 税抜金額を入力してくださせる。
- 送料は、税込の金額を表示させる。
- 税込みの金額が2,000円以上なら、送料は無料にする。
- 税込みの金額なら、運賃に送料をプラスする。
今回の必要な知識
- InputBox(ApplicationオブジェクトのInputBoxメソッド)
- IF構文での条件判定
- 変数を利用する
IF構文と、InputBox
条件判定では、pythonもVBAもIF構文を使います。
IF構文は絶対に使う構文です。
しかし、若干、記載方法が違います。
また、InputBoxには、関数とメゾッドの2つがあります。
前回は、InputBox関数を紹介しました。
今回は、InputBoxメゾットを紹介します。
InputBoxメソッド最大の武器は、この引数Typeです。
InputBox関数では引数Typeを指定できません。
引数Typeには、InputBoxメソッドが返すデータの型を指定します。
当然、InputBoxメソッドのほうが、汎用性があります。
下記のように、若干、見た目も違います。
今回紹介するInputBoxです。
以前に紹介したInputBoxです。
pthonとVBAのコード比較 作業手順 その1 利用する変数
soryo 送料350円を設定する
すべて数値型なので、Longを指定します。
pthonのように、無条件で文字列になるわけではありません。
pthonとVBAのコード比較 作業手順 その2 ApplicationオブジェクトのInputBox
InputBoxが指定できるのは下記のタイプです。
pthonとVBAのコード比較 作業手順 その3 if構文で、条件判定をする
If kingaku * 1.1 >= 2000 Then
税込金額が、2,000円以上なので、kingakuをあらかじめ、1,1倍する必要あります。
ここに気づいてしまえば、あとは簡単な条件分になります。
ElseIf kingaku < 2000 Then
Range(“A1”) = “運賃は” & kingaku * 1.1 + soryo & “です。”
あとは、上記のコードでしょうか?
私は、VBA初めのころは、Elseifと、Elseの区別がよくわかりませんでした。
わかりやすく解説しますと、Elesを使うのは、二者択一の場合と思うとカンタンかもしれません。
また、Elseifは、3択以上の場合に使います。
Ifを利用するのか、Select Caseを利用するかは、ケースバイケースになります。
Sub 運賃判定() Dim kingaku As Long, soryo As Long soryo = 350 kingaku = Application.InputBox("金額を入力してください。", Type:=1) If kingaku * 1.1 >= 2000 Then Range("A1") = "運賃は" & kingaku * 1.1 & "です。" Range("A2") = "送料は無料です。" ElseIf kingaku * 1.1 < 2000 Then Range("A1") = "運賃は" & kingaku * 1.1 + soryo & "です。" Range("A2") = "送料は350円です。" End If End Sub
ここがポイント
if構文を使うことは分かっていても、pythonでは、なかなか、コードが書けませんでした。やることは、同じなのですが、VBAと比較をしながら考えると、わりと、正解に近づきます。思考回路は、それほど変わりません。
まとめ
いまやっていることは、つまらないですが、平行してスクレイピングをやっています。
近々に、スクレイピングも紹介したいと思います。