• ベストアンサー

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

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

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

  • ベストアンサー
回答No.1

Mystr に入れる文字数はどれくらいあるのでしょうか? すごくおおきいのでは? 元になる文字列を小さく分けてみて、どうですか?

xmbscnplflzbf
質問者

お礼

ありがとうございます。

その他の回答 (1)

  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.2

AC2007, 2010 の Split, InStr関数のバグ? http://hatenachips.blog34.fc2.com/blog-entry-266.html 上記では Split 関数でも vbBinaryCompare で解決しているようですが。

xmbscnplflzbf
質問者

お礼

ありがとうございます。

関連するQ&A

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

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

  • 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), "") とすると、問題なくコードが通ります。

  • 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 とすると、 改行が返ります。 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の文字列操作について2

    エクセルVBAの文字列操作について2 以前、こちらでご教授いただいた以下のような文字列操作方法があります。 この方法ですと例えば[1-3]から3をひいた際に"1-2"と表示されますが 今回は連続する数字が2つの場合は1,2と表示させ3つ以上の場合は-でつないで表示させたいと思います。 一週間ほど考えたのですが解決できませんでした。 どなたかご協力お願いいたします。 質問内容 例えば、[1-10,15-20,22-38]と入っているセルがあるとします。 このセルに数を足したり引いたりしたいのです。 例えば、このセルから”5”を引いて[1-4,6-10,15-20,22-38]と表示したり、 "21"を足して[1-10,15-38]と表示したい。 いただいたご回答  A1 セル に「1-10,12,15-20,22-38」と入力されているとして、別のセルに =NUMORDER(A1,-5) と入力すると「1-4,6-10,12,15-20,22-38」と表示し =NUMORDER(A1,21) と入力すると「1-10,12,15-38」と表示します。  1つ目の引数には「セル番地」または「文字列」を、2つ目の引数には「1 ~ 99 までの整数」をお入れください。 Function NUMORDER(myStr As Variant, num As Integer) As String  Dim i As Long  Dim j As Double  Dim myNum As Variant   '文字列中の スペース を削除  myStr = Replace(myStr, " ", "")   '文字列の前後に「0」・「100」を挿入  Select Case Left(myStr, 2)   Case "1,", "1-"    myStr = myStr & ",100"   Case Else    myStr = "0," & myStr & ",100"  End Select   '文字列を カンマ で分割し、ハイフン の区間の数字を補完する  myStr = Split(myStr, ",")  For i = 0 To UBound(myStr)   If InStr(myStr(i), "-") > 0 Then    myNum = Split(myStr(i), "-")    myStr(i) = ""    For j = myNum(0) To myNum(1)     myStr(i) = myStr(i) & " " & j    Next    myStr(i) = Trim(myStr(i))   End If  Next   '欠番に「●」を入れ、「数を足したり引いたり」する  myStr = Split(Join(myStr))  For i = 0 To UBound(myStr) - 1   myStr(i) = myStr(i) & Application.WorksheetFunction.Rept(" ●", myStr(i + 1) - myStr(i) - 1)  Next  myStr = Split(Join(myStr))  If num > 0 Then   myStr(num - myStr(0)) = num  Else   myStr(-num - myStr(0)) = "●"  End If   '前後に挿入した「0」・「100」を削除  myStr = Replace(Join(myStr), " 100", "")  If Left(myStr, 2) = "0 " Then myStr = Right(myStr, Len(myStr) - 2)   '連続数字を ハイフン で繋ぐ  myStr = Split(myStr, "●")  For i = 0 To UBound(myStr)   If myStr(i) <> " " Then   myNum = Split(Trim(myStr(i)))    If UBound(myNum) > 0 Then     myStr(i) = myNum(0) & "-" & myNum(UBound(myNum))    End If   End If  Next   'カンマ で文字列に分割する  myStr = Application.Trim(Join(myStr))  NUMORDER = Replace(myStr, " ", ",") End Function

  • Chr(13)とChr(10)の違いは?

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

  • ディスク領域不足

    解決方法がわからず、困っています。PC初心者です。 あるゲームをダウンロードしようと思い、ダウンロードを実行したのですが、、、 ディスク領域不足です。ファイルを削除するなどしてディスク領域をあけてください。 といったカンジのエラーが出てしまい、ダウンロードができません。 使用していないファイルなどを削除し、ダウンロードに必要なデータ量分はあけたのですが、それでもディスク領域が足りないというエラーがでます。 どなたかご回答お願いします。

  • ディスク領域不足の対応

    VistaのCドライブディスクのドライブの領域を空けたいのですが、古いファイルや不要なファイルの見分け方がよくわかりません。 例えば「筆まめのアンインストール」を行おうとするとディスクの領域不足・・のエラーが出たりします。 更新プログラムのアンインストールもどれを実行していいのか分かりません。 アンインストールで領域不足の解消方法について教えてください。

  • レジストリー領域不足が表示される

    困っています。わかる方がいらっしゃいましたら 助言願います 当方OS WIN XPを使用しているのですが、「レジストリの領域不足の警告」が起動時に出ています。このエラーはWindows XPとWindows Server 2003の場合、レジストリのサイズ制限がなくなったため、レジストリの領域不足は起こらない。とされて居るのに出ています。 OS 2000と違いレジストリー領域を変更する設定も用意されて無く、 困っています。 レジストリーのクリーニングを実行後、暫くは出なくなって居ましたが 再び出るようになっています。ウィルスを疑いましたが調べた結果、それもありませんでした。

  • マクロで「"」を文字として扱う方法

    変数内文字列に含まれる " の文字を検索する時InStrRev(myStr,""")ではエラーになります。 この場合はどう記述すれば良いですか?

専門家に質問してみよう