【VBA】インクリメントやデクリメントは使える?代替案は?

スポンサーリンク
Access
スポンサーリンク

C言語やJAVAなどで欠かせないインクリメントやデクリメントですが、ExcelやAccessなどで使用するVBAでも使えるか、調べてみました。

・インクリメント
変数の値を1増やす演算 例:i++、++i
・デクリメント
変数の値を1減らす演算 例:i--、--i

スポンサーリンク

VBAでインクリメントやデクリメントは使えない?

VBAにはインクリメントやデクリメントという概念がなく、使えません。

試しに、i++やi--と書くと以下のエラーメッセージが出ます。

コンパイルエラー:

修正候補:式

++iやi--と書くと以下のエラーメッセージが出ます。

コンパイル エラー:

修正候補: 行番号 または 行ラベル または ステートメント または ステートメントの最後

VBAでインクリメントやデクリメントが使えない理由としては、
VBA(Visual Basic for Applications)はBASICというプログラミング言語がルーツなので、インクリメントやデクリメントが存在するC言語がルーツのプログラミング言語とは、歴史が異なるからです。

参考:VBA(Visual Basic for Applications)年表

(1964) BASIC
   ↓
(1985) QuickBASIC
   ↓
(1991) Microsoft Visual Basic
   ↓
(1993) Visual Basic for Applications
スポンサーリンク

代替案について

気になる代替案ですが、残念ながら有効なものはありませんでした。

加算代入演算子や減算代入演算子は?

試してみましたが、インクリメントやデクリメントと似たことができる加算代入演算子や減算代入演算子ではうまくいきませんでした。

(参考)
・加算代入演算子
変数の値に右辺の値を加算する演算 例:i+=1
・減算代入演算子
変数の値に右辺の値を減算する演算 例:i-=1

以下、エラーメッセージです。

コンパイルエラー:

修正候補:式

インクリメントやデクリメントと同様に、C言語がルーツのプログラミング言語で使用できる加算代入演算子や減算代入演算子についても、概念がないようですね。

関数を作ってみるのは?

無理やり捻りだすとするのであらば、インクリメントやデクリメントする関数を作るのはどうでしょう。

例えば、以下の関数「Increment(ByRef)」でインクリメントできます。

'呼び出し元の関数
Public Function TestIncrement()
 Dim i As Int
 i = 0
 ~
 Increment i
 ~
End Function
'インクリメント用関数
Sub Increment(ByRef i)
 i = i + 1
End Sub

ただこれははっきり言ってしまえば、自己満足なコードです。
あまり分かりやすくなったとは言いづらいですし、作った本人はいいでしょうが、他の人がコードを見たとき読みにくいコードになるでしょうね。。

以上、今回はインクリメントやデクリメントがVBAでも使えるか、また代替案は何かないか調べてみました。
以下がそのまとめです。

・VBAにインクリメントやデクリメントという概念はない
・代替案で有効なものもないため、
  i = i + 1
 という一般的な書き方をするのが良い

そもそもVBAのルーツであるBASICはあくまで初心者向けの言語のため、いくらインクリメントやデクリメントが分かりやすく効率的だからといって、現状でもi = i + 1と1行で処理できるのですから、これ以上知識が必要となる機能追加は望まれないのかもしれませんね。

本ブログで一押しのオンラインスクールのご紹介♪




本ブログで一押しのオンラインスクール「Udemy」
筆者も利用しているスクールで、日頃の隙間時間に好きな講座が学べるので大活躍です♪

ジャンルが豊富で学びたい講座がきっとみつかる

AI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで15.5万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます

お手頃な価格帯

1講座あたり数千~数万円程度で実践的なスキルアップが可能です。
講座は一度購入すれば視聴期限なく受講でき、30日返金保証もついているので安心して始めることができます。

学びやすい多彩な機能

0.5~2倍の変速機能で自分のペースで受講が可能、専用アプリを使えばスマホからオフライン環境でも視聴が可能です!
また、講師に直接掲示板から質問ができるので疑問を解決し自学自習をサポートしてくれます。

購入前に視聴できますので、是非興味のある方は↓をクリックしてみてください。




AccessExcelOfficeVBAプログラミング
スポンサーリンク
nyanblog
タイトルとURLをコピーしました