
VBAで文字を反映させると255文字制限に引っかかってしまいます。
最大で700文字程度反映できるようにしたいのですが、どのように設定すればよろしいでしょうか?
現在、
Worksheets("sheet1").Cells(47, 42).FormulaR1C1 = Worksheets("sheet2").Cells([i] + 2, 43).FormulaR1C1
とこのように設定しています。
コードを区切ってしまえばきちんと表示させることができるのですが、変数を使って繰り返し表示させようと思っているので区切らないほうが理想です。
すべてのコードは長めです。
教えてください。
No.2ベストアンサー
- 回答日時:
私の問題認識に誤りがあるのかもしれませんので、下記を実行しても 255
文字になるのか確認して下さい。
下記のテストコードは Sheet1 の A1 セルに 700 文字の文字をセットし、
Copy メソッド、FormulaR1C1 プロパティーのそれぞれで、Sheet2 の A 列
へ転記しています。
きちんと転記が成功したかを確認するために、Sheet2 の B 列には LEN
関数で文字数を数えています。
なお、当方( WindowsXP + Excel2002 )では、どちらも255文字といった
現象はありません。
Sub TestMacro()
Dim strBuf As String
With Worksheets("Sheet1").Cells(1, "A")
' セルの書式を「標準」にする
.NumberFormat = "General"
' 700文字のテストデータを A1 セルにセット
.Value = String$(700, "A")
' コピーテスト
.Copy
' 式の転記テスト
strBuf = .FormulaR1C1
End With
With Worksheets("sheet2")
' ワークシート Sheet2 の A1 セルにペーストテスト
.Cells(1, "A").PasteSpecial
.Cells(1, "B").Formula = "=LEN(A1)"
' ワークシート Sheet2 の A2 セルに式を転記
.Cells(2, "A").FormulaR1C1 = strBuf
.Cells(2, "B").Formula = "=LEN(A2)"
End With
End Sub
あるいは文字列の固定長変数を使ってるとか...
Sub Sample()
Dim strBuf As String * 255 '255 Byte
With Worksheets("Sheet1").Cells(1, "A")
.Value = String$(700, "A")
strBuf = .Value
End With
Worksheets("sheet2").Cells(1, "A").Value = strBuf
End Sub
この Sample プロシージャの場合、700文字のデータを変数 strBuf に
代入しようとしてますが、実際には先頭の 255 バイトしか代入されません。
度々のご回答ありがとうございます。結果、解決できてません・・・
どうやらひっかかってるのが、コピー段階らしいのです。
参照URL
http://www.relief.jp/itnote/archives/000240.php
そこで、シートをコピーした後にもう一度、セル内容をコピペしないといけないらしいのです。
私がやっているのは下記のようなことです。
Sub イメージ()
Dim i As Integer
For i = 1 To 2
Worksheets("sheet1").Cells(1, 1) = Worksheets("sheet2").Cells([i], 1) 'sheet1のセルA1に文字を反映
Sheets("sheet1").Select 'sheet1のみを新規ブックにコピー
Sheets("sheet1").Copy
ChDir "C:\Documents and Settings\個別"
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\個別\" & ActiveSheet.Cells(1, 1) & ActiveSheet.Cells(1, 2) & ".xls" 'セルA1とA2をファイル名にして新規保存
ActiveWorkbook.Close 'ブックを閉じる
Next i
End Sub
新規保存前の段階でセルの中身をコピペするらしく、具体的には、もう一度sheet2のセルの内容をsheet1のセルA1にコピーしなければいけないらしいです。
実際にどのようなコードを入れればよいのでしょうか?
よろしければご回答お願いいたします。
No.1
- 回答日時:
こんばんは。
KenKen_SP です。ちょっと意味不明な点がありますが....
> VBAで文字を反映させると255文字制限に引っかかってしまいます。
Excel2003 までの仕様では、ひとつのセルに 32,767文字まで入力可能です。
したがって、255文字制限とは、これのことでしょうか?
[XL2002] 表示形式が文字列のとき 256 文字以上の文字を表示できない
http://support.microsoft.com/kb/410234/ja
上記サイトから引用:
セルに入力されている文字の文字数が 1 ~ 255、または 1025 以上の
場合は、セルに文字列が表示されます。
文字数が 256 ~ 1024 の場合はセルに "#######" と表示されます。
再現方法としては、A1 セルを「文字列」にして次の数式を入力します。
= REPT("a",256) --> 表示が ### になる
= REPT("a",1025) --> 表示される
表示が ### となるだけで、データとしてはちゃんと残っていますので、
致命的なバグではありませんが、以前から Excel のバグとして MS では
認識されていたにも係わらず、どうやら既存バージョンの Excel では修正
される様子はありません。
つまり、どうしようもありません。(;´・ω・`)σ
対策としては、
方法1. 表示形式を「文字列以外」にする
-->例えば、表示形式を「標準」とか。
方法2. どうしても表示形式を「文字列」にするなら 1025 文字以上
あれば良いので、文字列の後ろにダミーの空SPでも付ける
-->例えば、A1 に 256~1024 文字のデータがあるなら
=A1&REPT(" ",1025-LEN(A1))
で無理矢理 B1 に表示するとか、VBA なら転記時に
1025 文字になるようにするとか。
ですね。では。
この回答への補足
ご回答ありがとうございます。
セル内の文字表示は正常ですが、255文字以上の部分になると反映されず文章の途中で切れてしまっている状態です。
いろいろやってみて気づいたんですが、コピー前は正常なのにコピー後のsheetでは255文字で切れてしまうことがわかりました。
コピーの仕方に問題があるのでしょうか?
Sheets("sheet1").Select
Sheets("sheet1").Copy
と普通にコピーはしてると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) 条件付き書式の設定方法を教えて下さい。 2 2023/04/14 18:12
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) VBA*セルに値があればシート名に反映 2 2023/02/21 14:52
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
このQ&Aを見た人はこんなQ&Aも見ています
-
変数に256文字以上のテキストを格納したい
Visual Basic(VBA)
-
Excel 1セル当りの文字数が255文字を超える場合のADOからの取
その他(プログラミング・Web制作)
-
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
-
4
文字列型変数に1024を超えた文字列を代入した時に
Visual Basic(VBA)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
Replace関数は文字数の制限あるのでしょうか?
Visual Basic(VBA)
-
8
アクセス メモ型 255文字以上入れられない
Access(アクセス)
-
9
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
10
メッセージボックスで1025文字以上を扱う
Visual Basic(VBA)
-
11
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
12
実行時エラー´5854´ 文字列型パラメーターが長すぎます。
Visual Basic(VBA)
-
13
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
14
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
15
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
16
全ての変数を一気にリセットする方法はありますか?
PowerPoint(パワーポイント)
-
17
VBAでセルの書式を変えずに文字列を置換する方法をご教示ください
Visual Basic(VBA)
-
18
テキスト型は何故255文字までなのでしょうか?
Excel(エクセル)
-
19
Accessのフィールド名に半角括弧を使ってしまった
Visual Basic(VBA)
-
20
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルに貼付けたURLが青文字...
-
VBAで文字を反映させると255...
-
ワード文章をエクセルにうまく...
-
excelのシートに合わせて背景を...
-
excelのセル内の文字を180度回...
-
エクセルの使い方教えて下さい。
-
キーボードのキー右下にある文...
-
「芦」の字が変換できません
-
カーソルの暴走
-
言語バーについて
-
スマホについて
-
大至急!教えてください。アド...
-
「こんな単語が一発変換できる...
-
文字入力のトラブル
-
キーボードからシフトキーを押...
-
ネット内の入力バーに文字が入...
-
ExcelデータをWordへ差し込み印...
-
Skypeの文字がΣ(゜д゜lll)
-
小文字の英数文字列の漢字登録...
-
中国語 キーボードで打つ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルに貼付けたURLが青文字...
-
VBAで文字を反映させると255...
-
追加入力の文字だけ色を変えた...
-
excelのセル内の文字を180度回...
-
エクセルで挿入した画像を背面...
-
Word のテキストボックスで、参...
-
エクセルで文字の任意の角度に回転
-
excelのシートに合わせて背景を...
-
エクセル 入力規則を使ったリ...
-
エクセルでセルの文字列を括弧...
-
ExcelをWordの代わりに使うコツ...
-
エクセルに関数式を入れました...
-
根号(√)や分数の入力について
-
エクセルの入力データと図形の...
-
エクセルのセルの一部の字の大...
-
キーボードのキー右下にある文...
-
「芦」の字が変換できません
-
カシオ KLD-300 ”ウ”の濁点の...
-
ハイフンの入力の仕方が分かり...
-
カーソルの暴走
おすすめ情報