• ベストアンサー

内部処理形式ってなんですか

よくヘルプに「文字列をバリアント型 (内部処理形式 String の Variant) で返します。」などと書いてあったりしますが、この内部処理形式とはなんなのでしょうか。また、内部処理形式がどの型かによっていろいろ気をつけなければいけない点などあるのでしょうか。

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

  • ベストアンサー
  • nakashi
  • ベストアンサー率51% (21/41)
回答No.2

Left関数とLeft$関数の違いを理解すればいいと思う Left$関数のほうが処理がはやい

参考URL:
http://dev.sfdata.ne.jp/VB/htdocs/msg08462.html
karasumori
質問者

お礼

解答ありがとうございます。 参考URL、とてもわかりやすかったです! より実用的なところまで知ることができました。

その他の回答 (1)

noname#25358
noname#25358
回答No.1

 これはですね。  表向きはバリアント型に見えるけど、実は中にストリング型が入ってる、という意味です。  バリアント型というのはさまざまな形式のデータを1つの変数で扱えるようにした変数のことで、通常は文字変数なら文字しか扱えない、といった制約があるのに対し、バリアント変数はそれだけ宣言しておけば文字でも数値でも配列でも、なんでも扱えてしまいます。  これは、バリアント型で宣言すると、内部で勝手にストリング型やインテジャー型などを宣言してくれるためで、代入する際に型を自動認識して代入されています。  ですから、「文字列をバリアント型 (内部処理形式 String の Variant) で返します。」とは、「ストリング形式の文字列が内部に格納されたバリアント型変数を返す」という意味です。

karasumori
質問者

お礼

解答ありがとうございます。 内部で自動的にやってくれているだけなので、気にしなくて良いのですね。 「内部処理式がStringの場合・・・」とかいうのを見て、 なにか配慮が必要なんだろうかという心配をしてしまっていました。

関連するQ&A

  • 「内部処理形式 String の Variant」

    「内部処理形式 String の Variant」とは? VBAでCurDirのヘルプを見ると -------------------------------------------- 指定したドライブの現在のパスを表すバリアント型 (内部処理形式 String の Variant) の値を返します。 -------------------------------------------- と記載されるのですが 「内部処理形式 String の Variant」の意味がよくわかりません。 Sub test() Debug.Print TypeName(CurDir) End Sub を実行すると、Stringが返ってきましたが 「内部処理形式 String の Variant」という事は、「String」と言う意味ですか?

  • 内部処理形式が日付型 (Date) の Variant

    文字変数として保存されている日付の演算を組込み関数で行おうと debug.print DateDiff("yyyy", DateValue("2001.1.1"), DateValue("2001.10.16")) debug.print DateDiff("yyyy", "2001.1.1", "2001.10.16") 等やってみたのですが、 実行時エラー13 型が一致しません となり実行できません。 DateDiff 関数の引数になる「内部処理形式が日付型のVariant」型変数への代入方法をお知らせください。 実行環境 Visual Basic 6.0 SP5 Windows 98 256MB + 32GB-HDD(空き10GB)

  • perl 5.6 とperl 5.8 の内部形式の違い

    perl 5.8 からはUnicode対応され、内部形式がUnicodeで管理されると聞きました。Unicodeで管理されるということが結局どういうことなのか?従来のperl 5.6 と比べて何が変わったのかが理解できません。 perl 5.6 はUnicode対応されていないので内部形式はバイナリ。たとえばリテラル文字をソースに書いた場合、内部での文字はバイナリ列として管理されるのでバイナリの元の文字がどのようなエンコード(EUC、SJIS等)であったかはプログラマが意識するところ。それに対し、perl 5.8 はUnicode対応されているのでperl 5.6 のようにプログラマが文字コードを意識する必要はない(常にUnicode)と理解しています。 私の理解は上記のようなものですが、これが正しいのか正直まったく自身がありません。むしろ、違っているならばよりわかりやすい説明をお願いしたいところです。 長文となりましたが、よければ教えてください。お願いします。

  • Find ヘルプの見方がわからない

    ヘルプを見てもわからないので教えてください。 aaaaa@yahoo.co.jp で、「@」より左の文字列を取得したいので、 「@」が何文字目にあるかをVBAで調べたいです。 ヘルプでWorksheetFunction.Find メソッドを見てるのですが --------------------------------------------------------- 名前 必須/オプション データ型 説明 Arg1 必須 文字列型 (String) ワークシートの名前を指定します。 Arg2 必須 文字列型 (String) 範囲の名前を指定します。 Arg3 オプション バリアント型 (Variant) 検索を調整する引数の名前を指定します。 --------------------------------------------------------- と記載されているのですが Sub a() Dim i As Long i = Application.WorksheetFunction.Find() End Sub のFindの中にはどのように記載すればいいのでしょうか? そもそもArg1 の「ワークシートの名前を指定します。 」がまずわからないのですが。 VBAで行いたいので、ワークシートは関係ない気がします。 もしかして私が見てるヘルプはVBAのヘルプではないのでしょうか? ご回答よろしくお願いします。

  • 配列での文字列の連続処理

     VBAなので低レベルすぎてここで質問する内容ではないかもしれませんが      Dim 元データ As Variant Dim 文字数 As Variant 元データ = Range("D1:D3087") For i = 1 To 3087 ’元データに格納されている文字列をこの間で操作したい      任意の文字を抜き取ってセルに貼り付ける 文字数 = Len(元データ) MsgBox 文字数 Next i 上記で 元データ に D1:D3087 の文字列を格納し文字列から必要な部分を抜き出しセルに書き込みたいのですが、エラーで止まります D1:D3087 の1行目は麻B060516-MSE300です。 文字列を操作できないのは元データがstringじゃないので無理っぽいかんじがするのですが配列に取り込むにはvariantじゃないといけないみたいなので、良い方法があればご教示いただけると幸いです。

  • Stringとは一体何だ?

    Stringは型なのでしょうか?それともクラスなのでしょうか? Stringは参照型の型で、クラスを表す、つまり文字列を表す参照型の型であり文字列を表すクラスでしょうか?説明が悪くてごめんなさい。Java歴二週間です。

    • ベストアンサー
    • Java
  • 日付で判定する処理

    あまりよくわかっていないので恐縮ですが,掲示板のような処理で入力は日付と文章のみです. 入力の文字列の日付は,今日だと「2005/02/14」と入れ,文章は「こんにちは」としたとするとこの2つがテキストファイルに「,カンマ区切りで」書き込まれます.それをhtmlで表示させているようです. やりたい処理は1週間前の日付だったら文章の文字列を赤色で表示するということをしたいのです. 比較結果で赤文字列にする処理はわかったのですが判定の部分で悩んでおります. 判定する際,思いついたのが入力してある文字列がたとえば「2005/02/14」の形式なのでこの値と今日の日付とを比較して7日前だったら文章を赤文字にしたいのですが,普通はどのような比較をするのでしょうか? 私が考えたのは,ファイルに書き込まれている「2005/02/14」を読み込み「/」をなくして「20050214」にし数字形式にすることで,今日の日付も,「20050214」の形式として7日を引けば負の時は何もせず正の時は文章を赤文字で表示させればと考えたのですが,ファイルから読み込んだ「2005/02/14」から「/」を無くす方法や今日の日付を取得した結果は文字列の形式みたいなので計算にはつかえないようです. 実はもっと簡単な方法があるのではないかと悩んでいたりしています.どなたかご教授お願いいたします.

    • ベストアンサー
    • Perl
  • ファイルの作成日時を取得するにはどうすれば?

    エクセル2003です。 ファイルの作成日時を取得するにはどうすればいいですか? MsgBox FileDateTime(ActiveWorkbook.FullName) を実行すると、更新日時が取得されてしまいます。 FileDateTime 関数のヘルプを見ると、 ----------------------------------- 指定したファイルの作成日時または 最後に修正した日時を示すバリアント型 (内部処理形式 Date の Variant) の値を返します。 ----------------------------------- と書かれていますが、 どうすれば作成日時を取得できるのでしょうか?

  • WSTRINGとは?

    wstringもstringも同じbasic_stringから型宣言によって作られたものであり wstringはwchar_t文字列(ワイド文字列)をサポートするということですが ワイド文字列について具体例で教えてください stringを使ってきたのですがwstringを使う必要性や具体例について教えてください

  • エクセル MATCH関数の内部処理について

    MATCH関数で、照合の型に1を指定する場合、データ(数値)を昇順で並べ替えておく必要があるとなっています。 しかし、仮に昇順になっていなくても何かしらの数値が返ってきます。 そして、その法則が今ひとつわかりません。 たとえば3を検索するとして、6例挙げてみます。 結果 | データ 3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 | 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 3 | 1 2 3 4 5 6 7 6 1 2 3 4 5 6 7 8 | 1 2 3 4 3 2 2 3 4 5 6 6 7 8 9 3 | 1 2 3 4 3 2 1 4 5 6 7 8 9 10 11 8 | 1 2 3 4 1 1 1 1 9 10 11 12 13 14 15 いろいろ試したのですが、仮説を立てるたびに反例が出てきてしまいどうしても結論が出ません。 内部では一体どのような処理を行っているのでしょうか?