実行時エラー: 文字列領域が不足しています

このQ&Aのポイント
  • 実行時エラー14: 文字列領域が不足しています。変数に格納した値を置換しようとするとエラーが発生します。
  • 変数はString型で宣言されており、一度変数に格納した値を取得し、Replace関数で置換しようとしています。
  • しかし、置換処理を行うと文字列領域が不足しているというエラーが発生します。なぜなのでしょうか?このエラーはAccess VBAで発生しています。
回答を見る
  • ベストアンサー

実行時エラー 14 文字列領域が不足しています。

一度変数に格納した値を置換しようとしたら、 実行時エラー 14 文字列領域が不足しています。 となりました。 変数は、String型で宣言しています。 myStr = rs("回答文") myStr = Replace(myStr, Chr(10), "") のように、一度myStrに格納した変数の格納を取ろうと思い、 Replaceで置換しようとすると、エラーが発生します。 myStr = rs("回答文") で myStrに格納できた時点で、容量は足りているはずだし、 Replace(myStr, Chr(10), "")で置換することによって、更に容量を減らしているのに なぜエラーになるのでしょうか? アクセスvbaです。

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

  • ベストアンサー
  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.1

>Replaceで置換しようとすると、エラーが発生します。 変数に代入するところではなく置換のところでエラーですか? 例えば、CSVのデータを読み込む際に改行コードLFは認識できません。 なのでCSVデータ全てを変数に代入しようとします。 とりあえず変数に代入した後にStop入れて、myStrの中身を 確認してみて下さい。 そこで問題なく文字列が取得できていたら、以下のサイトを参考に してみて下さい。 http://hatenachips.blog34.fc2.com/blog-entry-266.html

その他の回答 (1)

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.2

No1です。 確認したところ、 Dim myStr As String myStr = "いすず自動車" & Chr(10) myStr = Replace(myStr, Chr(10), "") だとOKでした。 myStr = "いすゞ自動車" & Chr(10) myStr = Replace(myStr, Chr(10), "") だとNGでした。 ちなみに myStr = "いすゞ自動車" myStr = Replace(myStr, Chr(10), "") だとOKでした(要するにLFを含まない文字列のReplace) なので、LFががあり、かつ、「ゞ」のような特殊文字?が混在していると ダメみたいですね。 先ほどのサイトをご参考に、 myStr = "いすゞ自動車" & Chr(10) myStr = Replace(myStr, Chr(10), "", , , vbBinaryCompare) とすると、OKでした。 とりあえず、myStr に格納された文字列の中身を確認して 特殊文字が無いか確認した方がよいかもしれませんね。

関連するQ&A

  • MSXML2 実行時エラー14 Replace

    MSXML2でソースを抜き出して改行を置換しようとすると Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://" objIE.send myStr = objIE.responseText myStr = Replace(myStr, Chr(10), "") 実行時エラー14 文字列領域が不足しています。 と出る時があります。 これは変数に格納した文字が多すぎるのでしょうか? でも変数に格納できてるけど、置換ができないって事があるのでしょうか?

  • 文字列領域が不足しています

    vbaです。 原因は不明ですが myStr = Replace(myStr, Chr(10), "") の時に 「実行時エラー 14 文字列領域が不足しています。」 と言うエラーが発生するので 対処法として myStr = Replace(myStr, Chr(10), "", , , vbBinaryCompare) としているのですが、 tmp = Split(myStr, Chr(10)) でも同じように 「実行時エラー 14 文字列領域が不足しています。」 が発生するのですが 対処法は有りますか?

  • vba 改行 「・・」が置換できない

    シートの文字を取得して、削除したい文字を置換で消そうと思うのですが、 変数に格納した値にマウスカーソルを充てると、「・・」と表示され、置換できません。 ?mystr とすると、 改行が返ります。 mystr = Replace(mystr, Chr(10), "") mystr = Replace(mystr, Chr(13), "") mystr = Replace(mystr, vbCr, "") mystr = Replace(mystr, vbCrLf, "") mystr = Replace(mystr, Chr(10) & Chr(13), "") mystr = Replace(mystr, Chr(10) + Chr(13), "") で置換を試みましたが、全部だめです。 Debug.Print Asc(mystr) とすると、9が返ります。 この文字はどうやったら置換で消せるのでしょうか?

  • vba 実行時エラー14 文字列領域が不足していま

    Dim moji As String Dim myAll As Variant moji = "<" Set objMSXML2 = CreateObject("MSXML2.XMLHTTP") objMSXML2.Open "GET", "http://○○.html", False objMSXML2.Send myAll = objMSXML2.responseText myAll = Replace(myAll, Chr(10), "") と言うコードがあるのですが とあるサイトで、 myAll = Replace(myAll, Chr(10), "") の部分で、 実行時エラー14 文字列領域が不足しています。 となります。 どういう意味のエラーなのでしょうか? 「文字列領域が不足」と言う日本語がわかりません。 ちなみに myAll = Replace(myAll, Chr(13), "") とすると、問題なくコードが通ります。

  • 変数内のURL文字列を置換させたい

    変数に格納した文字列のうち、URLを以下のようにして 置換しようとしましたが、置換されませんでした。 $html = str_replace("www.sample.com/hoge", "hoge.hogeoge.net", $html); str_replace の使い方が間違っているのでしょうか。 どうぞ宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • Chr(13)とChr(10)の違いは?

    myStr = Replace(myStr, Chr(13), "") や myStr = Replace(myStr, Chr(10), "") で、改行を置換しているのですが、どちらかでも改行できる時や どちらかじゃないと改行できない時があります。 そもそもChr(13)とChr(10)の違いはなんでしょう? どちらも改行ですよね? 何が違うのでしょう?

  • 置換する場合も最高文字数は何文字ですか?

    エクセルvbaで置換する場合も最高文字数は何文字ですか? と言うのも、 Cells(1, 1).Replace What:=mystr, Replacement:="", LookAt:=xlPart で、mystrは260文字なのですが、これを実行しようとすると 型が一致しません。(Error 13) と言うエラーになるのですが、 これは変数に格納されている文字数が多いせいか、他のエラーなのかわからないのですが 文字制限ってあるのでしょうか?

  • 【VBA】半角カタカナのみを全角にするには?

    http://bekkoame.okwave.jp/qa8979427.html こちらのページを参考にしたのですが カタカナのみ全角にしたいのですが 平仮名がカタカナになってしまいます。 正規表現と言うのがよくわからないので コピペで使ってますが Sub Sample2() Dim myStr As String Dim Match As Object, Matches As Object Dim CW As String With CreateObject("VBScript.RegExp") .Pattern = "[\uFF61-\uFF9F]+" '---(1) .Global = True myStr = "あああイイイ" If Len(myStr) > 0 Then Set Matches = .Execute(myStr) 'マッチしたすべての文字列を置換 For Each Match In Matches myStr = Replace(myStr, Match.Value, _ StrConv(Match.Value, vbWide)) '---(2) Next Match CW = myStr End If End With End Sub だと「あああ」は平仮名のままなのですが myStr = "のののノノノ" にすると、ひらがなの「ののの」が全角カタカナになってしまいます。 Sub test() Call KanaJisF("あああイイイ") End Sub Function KanaJisF(ByVal sSrc As String) As String Dim sTempW As String Dim sTempN As String Dim i As Long ' ' 全角カナに相当する文字コードを総当たりでループ For i = -31852 To -31936 Step -1 sTempW = Chr(i) ' 全角カナ変数に格納 sTempN = StrConv(sTempW, vbNarrow) ' 半角カナに変換して変数に格納 ' ' 半角カナ各文字が、文字列に含まれている場合、全角カナに置換 If InStr(1, sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, sTempW) Next i ' ' 半角長音、文字列に含まれている場合、全角長音に置換 sTempN = Chr(176) If InStr(sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, "ー") KanaJisF = sSrc End Function こちらのコードは、「あああ」も全角カタカナになりました。 "のののノノノ"も同様です。 平仮名は平仮名のままにしたいのですが そのような方法はありますか?

  • DB2でREPLACEによる文字列の置換

    ODBC経由でPHPからDB2にアクセスしているのですが 電話番号から「-」を除いて比較しようとして 「 SELECT * FROM TABLE WHERE REPLACE(TEL,'-','') = '09012345678' 」 というSQL文を送信しても 「 *LIBLのタイプ*NのREPLACEが見つからない。 」 というエラーメッセージが返されます。 DB2にはREPLACE関数が存在しないのでしょうか? もし存在しないのでしたら文字列を置換する関数は何を使えばよいのか教えて頂けないでしょうか。 よろしくお願いします。

  • vbaで配列に値を格納する場合

    vbaで配列に値を格納する場合 変数の宣言はどちらを使った方が良いのでしょうか? Sub Sample1() Dim i As Long Dim myStr As String Dim tmp() As String myStr = "a,i,u,e,o" tmp = Split(myStr, ",") End Sub か Sub Sample1() Dim i As Long Dim myStr As String Dim tmp As Variant myStr = "a,i,u,e,o" tmp = Split(myStr, ",") End Sub でも問題なく動くのですが、 Variant型での宣言はあまりしない方が良いですか? あと Dim tmp() As String ならエラーにならないのですが Dim tmp As String だとエラーになってしまう理由がよくわからないので教えて頂けますか?

専門家に質問してみよう