Excel VBA質問箱 IV

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

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


5726 / 13645 ツリー ←次へ | 前へ→

【49214】セルに登録する文字数について papa-mama 07/5/27(日) 23:03 質問[未読]
【49224】Re:セルに登録する文字数について りん 07/5/28(月) 6:00 発言[未読]
【49236】Re:セルに登録する文字数について Jaka 07/5/28(月) 10:30 発言[未読]
【49238】予断 Jaka 07/5/28(月) 13:01 発言[未読]

【49214】セルに登録する文字数について
質問  papa-mama  - 07/5/27(日) 23:03 -

引用なし
パスワード
   こんばんは。
マニュアルやネットで検索したんですが、解決しなかったので
助けてください。

セルに記録された255文字以上のデータを一旦変数に格納し
後にその格納した変数をセルに記録しようとしたんですが
255文字以上は受け付けてもらえず以降は欠落します。

試しに以下のようにEXCELシート上で処理をしようとしてもダメでした。
="aaaaaaa〜〜〜〜aaaaaaa"
上記の『a』を256文字入れようすると『数式が長すぎます』という
エラーが出てダメです。
255文字ならOK。

何か予め初期設定をしていると255文字以上の格納ができるものでしょうか?

変数宣言で、STRINGは2Gまでの値を格納することが可能との制約がありますが
セルにいざ値を格納しようとすると255文字制限で先に進めません。

【49224】Re:セルに登録する文字数について
発言  りん E-MAIL  - 07/5/28(月) 6:00 -

引用なし
パスワード
   papa-mama さん、おはようございます。
>
>試しに以下のようにEXCELシート上で処理をしようとしてもダメでした。
>="aaaaaaa〜〜〜〜aaaaaaa"
>上記の『a』を256文字入れようすると『数式が長すぎます』という
>エラーが出てダメです。
>255文字ならOK。
数式にせず、直接文字列としてaaaaaaa〜〜〜〜aaaaaaaと打ち込んだ場合ならば、1万文字を超えてもエラーにならなかったので実験は中断。

引き渡しについては、このマクロで試しました

Sub test()
  Dim A$
  '
  With Application.ActiveSheet
   .Range("A1").Value = String(20000, "a") '文字列長10000文字
   .Range("A2").Value = .Range("A1").Value '直接渡す
   A$ = .Range("A1").Value '変数を経由して渡す
   .Range("A3").Value = A$
   '文字列長確認用
   .Range("B1:B3").FormulaR1C1 = "=LEN(RC[-1])"
  End With
End Sub

ちなみにEXCEL2003およびEXCEL2007です。

EXCELのバージョンによって結果が変わることがあるので、動作の不具合に関する質問時には環境を明記した方がいいですよ。その方が返事が返ってきやすいと思います。

【49236】Re:セルに登録する文字数について
発言  Jaka  - 07/5/28(月) 10:30 -

引用なし
パスワード
   一応、↓642文字でも大丈夫でした。
(半角英文字が連続するとUPできないのでいい加減な位置で改行しました)
=IF(OR(AND(CODE(B5)>=9516,CODE(B5)<=9538),AND(CODE(B5)>=9551,CODE(B5)<=9552),
AND(CODE(B5)>=9557,CODE(B5)<=9558),AND(CODE(B5)>=9563,CODE(B5)<=9564)),
IF(MOD(CODE(B5),2)=0,IF(ISERROR(MATCH(CHAR(CODE(B5)-1),$A$3:$A4,0)),
CHAR(CODE(B5)-1),""),IF(ISERROR(MATCH(LEFT(B5,1),$A$3:$A4,0)),LEFT(B5,1),"")),
IF(OR(CODE(B5)=9541,CODE(B5)=9543,CODE(B5)=9545,CODE(B5)=9555,CODE(B5)=9561),
IF(ISERROR(MATCH(CHAR(CODE(B5)-1),$A$3:$A4,0)),CHAR(CODE(B5)-1),""),
IF(OR(CODE(B5)=9553,CODE(B5)=9556,CODE(B5)=9559,CODE(B5)=9562,CODE(B5)=9565),
IF(ISERROR(MATCH(CHAR(CODE(B5)-2),$A$3:$A4,0)),CHAR(CODE(B5)-2),""),
IF(ISERROR(MATCH(LEFT(B5,1),$A$3:$A4,0)),LEFT(B5,1),""))))

上の数式を文字列にすると「数式が長すぎます。」とエラーになります。
="=IF(OR(AND(CODE(B5)>=9516,CODE(B5)<=9538),AND(CODE(B5)>=9551,CODE(B5)<=9552),
AND(CODE(B5)>=9557,CODE(B5)<=9558),AND(CODE(B5)>=9563,CODE(B5)<=9564)),
IF(MOD(CODE(B5),2)=0,IF(ISERROR(MATCH(CHAR(CODE(B5)-1),$A$3:$A4,0)),
CHAR(CODE(B5)-1),""),IF(ISERROR(MATCH(LEFT(B5,1),$A$3:$A4,0)),LEFT(B5,1),"")),
IF(OR(CODE(B5)=9541,CODE(B5)=9543,CODE(B5)=9545,CODE(B5)=9555,CODE(B5)=9561),
IF(ISERROR(MATCH(CHAR(CODE(B5)-1),$A$3:$A4,0)),CHAR(CODE(B5)-1),""),
IF(OR(CODE(B5)=9553,CODE(B5)=9556,CODE(B5)=9559,CODE(B5)=9562,CODE(B5)=9565),
IF(ISERROR(MATCH(CHAR(CODE(B5)-2),$A$3:$A4,0)),CHAR(CODE(B5)-2),""),
IF(ISERROR(MATCH(LEFT(B5,1),$A$3:$A4,0)),LEFT(B5,1),""))))"

なんか、文字として扱う場合の最高が、255文字まで見たいですね。
↓英文字256文字なのでエラーになります。
="aaaaazzzzzzz4zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
xxxxxxxxxxxxaaaa"

by2002
上の642文字の関数は、97で作ったもの。

【49238】予断
発言  Jaka  - 07/5/28(月) 13:01 -

引用なし
パスワード
   >なんか、文字として扱う場合の最高が、255文字まで見たいですね。
>↓英文字256文字なのでエラーになります。
>="aaaaazzzzzzz4zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
>zzzzzzzzaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
>zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaaaaaaaaaaaaaaaaaaaa
>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
>xxxxxxxxxxxxaaaa"

上を&でつなげると大丈夫でした。

="aaaaazzzzzzz4zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" &
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
xxxxxxxxxxxxaaaa"

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