- ベストアンサー
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)
- みんなの回答 (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として扱う。 となります。
その他の回答 (1)
- taka37777
- ベストアンサー率30% (166/544)
これだけだと何をやっているか分かりませんが。 エクセルのVBAでF_Cryptを呼び出しているところがあるはずです。ファンクションの名前から暗号化に関するものなのでしょうか? F_Cryptに2つの引数が渡されていて、Seedに入っている文字の数が3より大きいときj=3、それ以下の場合文字の数入れているという事になります。
お礼
お礼が遅くなってすいません。 どうもありがとうございました。 まだまだ勉強不足です。もっと頑張ります。
お礼
丁寧な回答ありがとうございます。 自分の不勉強さを痛感しています。 まだまだ、勉強不足です。 もっと頑張ります。 どうも、ありがとうございました。