• ベストアンサー

VBAについて教えてください。

職場のエクセルのVBAを見ていたら、下記のように書かれていました。VBAを勉強し始めたばかりで何が書かれているのか解りません。 お手数ですが教えてください。よろしくお願いします。 Function F_Crypt(Data As Long, Seed As String) As Long Dim i As Long, j As Integer, act1 As Long, act2 As Long, iSeed As String If Len(Seed) > 3 Then j = 3 Else j = Len(Seed)

質問者が選んだベストアンサー

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.2

順番が逆になりますが先にこちらから。 Dim i As Long, j As Integer, act1 As Long, act2 As Long, iSeed As String 変数の宣言が行われています。 変数とはプログラム中で、自由に値を保存しておくことができる入れ物をさします。 VBでの変数の宣言方法は、 Dim 変数名 AS 変数のタイプ したがって、 Dim i As Longはiが変数名でLongが変数のタイプとなります。 Dim i As Long, j As Integer のように,区切りで記述することもできますし、 Dim i As Long Dim j As Integer のように宣言することもできます。 変数のタイプには Integer 整数型 2byte Long 長整数型 4byte String 文字列型 格納した文字列により変動 Date 日付型 8byte Double 倍精度浮動小数点数型 8byte などなどあります。 変数の宣言の仕方にはDim以外にもPrivate,Public,Staticがあります。 変数の参照範囲を宣言時に指定しています。 宣言したプロシージャまたは関数内での参照に限定したものをDimで宣言します。 Privateはモジュール内での参照に限定され、Publicはプログラム内からの参照となります。 StaticはDimと同じ参照限定ですが、Dimがプロシージャが終了した段階で、クリアされるのに対し、Staticは値が保持されるという違いがあります。 Function F_Crypt(Data As Long, Seed As String) As Long 関数であることを宣言しています。 VBでは プロシージャ(処理)と呼ばれるSubと ファンクション(関数)と呼ばれるFunctionの大きく分けて二つに処理を記述していくことになります。 一般にプログラムは複数の処理や関数の集合体であり、相互に参照しあったり、して成り立っています。 構文として、 Function 関数名(引数) AS 戻り値のタイプ したがってF_Cryptが関数を呼び出すための関数名、Dataは長整数型の引数、Seedは文字列型の引数、F_Cryptの戻り値は長整数型ということがわかります。 つまり、F_Cryptという関数は、二つの引数を使用し、長整数型の数字を求めてくれるという意味をあらわしています。 最後に If Len(Seed) > 3 Then j = 3 Else j = Len(Seed) ここでは If 条件文 THEN 処理 End If または If 条件文 THEN 処理 の構文を使用しています。 Len関数も使用されていますね。 先にLen関数から、 Len(文字列) ※実際は文字列でなくても動きます。 文字列の長さを返してくれる関数です。 If Len(Seed) > 3 Then j = 3 Else j = Len(Seed) を処理を言葉で捕らえて見ましょう。 もし、Seedの長さが3より長いときは、jを3にします。 それ以外の場合、jをSeedの長さにします。 という理解になるでしょう。 要約すると、jにはSeedの長さを格納したいが、3を最大値とし、Seedの長さが3を超える場合は3として扱う。 となります。

makoto30
質問者

お礼

丁寧な回答ありがとうございます。 自分の不勉強さを痛感しています。 まだまだ、勉強不足です。 もっと頑張ります。 どうも、ありがとうございました。

その他の回答 (1)

  • taka37777
  • ベストアンサー率30% (166/544)
回答No.1

これだけだと何をやっているか分かりませんが。 エクセルのVBAでF_Cryptを呼び出しているところがあるはずです。ファンクションの名前から暗号化に関するものなのでしょうか? F_Cryptに2つの引数が渡されていて、Seedに入っている文字の数が3より大きいときj=3、それ以下の場合文字の数入れているという事になります。

makoto30
質問者

お礼

お礼が遅くなってすいません。 どうもありがとうございました。 まだまだ勉強不足です。もっと頑張ります。

関連するQ&A