Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10414 / 13646 ツリー ←次へ | 前へ→

【21993】VBA基本用語を教えてください ichi 05/2/6(日) 17:58 質問[未読]
【21994】Re:VBA基本用語を教えてください ちゃっぴ 05/2/6(日) 18:20 回答[未読]
【21996】Re:VBA基本用語を教えてください ichi 05/2/6(日) 18:42 お礼[未読]
【21997】Re:VBA基本用語を教えてください ちゃっぴ 05/2/6(日) 19:18 回答[未読]
【22004】Re:VBA基本用語を教えてください sa 05/2/7(月) 9:59 発言[未読]

【21993】VBA基本用語を教えてください
質問  ichi E-MAIL  - 05/2/6(日) 17:58 -

引用なし
パスワード
   VBAの初心者です
VBA作成説明書の中で
   1; 固定長文字列変数
   2; 可変長文字列変数 
   3; DIM文で DIM moji AS String*20 とありますが
      *20 はどのようないみなのでしょうか 
   4; レコード長
  以上教えて頂ければ よろしくお願いします

【21994】Re:VBA基本用語を教えてください
回答  ちゃっぴ  - 05/2/6(日) 18:20 -

引用なし
パスワード
   >   1; 固定長文字列変数
>   2; 可変長文字列変数

VBAでは文字列変数(String)は、既定で可変長で扱われます。
可変長文字列とは、その名前が示すとおり、文字列の長さが
可変であるものです。

これに対し、固定長文字列は文字列の長さが固定であるものです。

>   3; DIM文で DIM moji AS String*20 とありますが
>      *20 はどのようないみなのでしょうか

固定長文字列変数で20文字という意味です。
 
>   4; レコード長

多分Typeを使って宣言しているのでしょう。

たとえば、

Type hogeoge
  Index As Long
  Name As String * 20
End Type

となっている場合、「レコード長」は
Long(32bit = 4Byte) + (String * 20(2Byte * 20 = 40Byte) = 44Byte
となります。

ただし、この固定長文字列には癖があって、
ANSI(Shift-JIS等)のTextを読み込むときには、
この限りではありませんのでご注意ください。

【21996】Re:VBA基本用語を教えてください
お礼  ichi E-MAIL  - 05/2/6(日) 18:42 -

引用なし
パスワード
   ▼ちゃっぴ さん:
  ありがとうございます
>となっている場合、「レコード長」は
>Long(32bit = 4Byte) + (String * 20(2Byte * 20 = 40Byte) = 44Byte
>となります。
>
>ただし、この固定長文字列には癖があって、
>ANSI(Shift-JIS等)のTextを読み込むときには、
>この限りではありませんのでご注意ください。

  もうひとつ 教えてください
Open "C:\Documents and Settings\VBATEST\TEST.xls" For Random As #flno Len = 40
  のとき Len=40 の40がわからないような時 どのように調べれば
  よいのでしょうか 

【21997】Re:VBA基本用語を教えてください
回答  ちゃっぴ  - 05/2/6(日) 19:18 -

引用なし
パスワード
   >  もうひとつ 教えてください
>Open "C:\Documents and Settings\VBATEST\TEST.xls" For Random As #flno Len = 40
>  のとき Len=40 の40がわからないような時 どのように調べれば
>  よいのでしょうか 

Random ModeでRecord長がわからないってことはないと思いますけど・・・
独自に定義したものなら、仕様書とかに書いてあるはずですけど・・・

なければ、Binary Editorで開いて Record長を解析するしか
方法はないと思います。

【22004】Re:VBA基本用語を教えてください
発言  sa  - 05/2/7(月) 9:59 -

引用なし
パスワード
   たとえば、

Type hogeoge
  Index As Long
  Name As String * 20
End Type

sub
Dim STR as hogeoge
  ・
  ・
  ・  
Open "C:\Documents and Settings\VBATEST\TEST.xls" For Random As #flno Len=Len(STR)

でいけませんか?

10414 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free