ここから本文です

【Excel VBA】 String型の最大文字数と入力規則(Validation)について 現在,下...

moe********さん

2012/1/2609:37:31

【Excel VBA】 String型の最大文字数と入力規則(Validation)について

現在,下記のようなコードでエラー(1004番)が発生しています.皆様の知恵をお貸し下さい.

この質問は下記URLの続きとなります.
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1180129506

皆様のご返答に感謝します.
説明不足でしたので,やりたい事とエラー内容をコードにて説明します.

まず,あるシートのセルA1を原点として行方向に4桁の数字が100行分記述されています.
例えば,セルA1には1000,セルA2には1001,セルA3には1002,・・・といったようにセルA100まで4桁の数字が記述されています.

このデータをB1セルにリスト選択形式(Validation)にて表示させるようなコードとなっています.

'****************************************************************
Sub test1()

Dim list As String
Dim k As Integer

k = 0

Do
Set ListRNG = Worksheets(ActiveSheet.Name).Range("A1").Offset(k, 0)
' 指定セルから下へ空白セルに当たるまでリストアップ
If IsEmpty(ListRNG.Value) Then Exit Do
' 入力規則(リスト)データ作成
If list = "" Then
list = ListRNG.Value
Else
list = list & "," & ListRNG.Value
End If
' オフセットカウントアップ
k = k + 1
Loop

'入力規則の設定
With Worksheets(ActiveSheet.Name).Range("B1")
.Validation.Delete '入力規則を削除
If list <> "" Then '候補リストが空でなければ
.Validation.Add xlValidateList, Formula1:=list '入力規則を設定&リストを追加
Else '候補リストが空ならば
.Value = "NO HIT" '選択リストの値は"NO HIT"
End If
End With

End Sub
'****************************************************************

実際には,変数Listにカンマ区切りでリストの候補となるデータを加算していくのですが,255文字を超えると,255文字以降が切捨てされ,その状態で「.Validation.Add xlValidateList, Formula1:=List」のコードが実行されるとエラー&フリーズの現象が起きてしまいます.

仮に255文字を超えないように,セルA50までしかデータを入力しないで実行したところ正常な動作が確認できました.

皆様の知恵をお貸し下さい.

閲覧数:
10,956
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

rut********さん

編集あり2012/1/2610:11:18

しらべてはいませんが、変数の制限ではなく、数式の文字数の上限による制限だと思います。
普通に数式で設定してはどうですか?

ちょっと修正しました
Sub test1()
Dim list As String

list = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Address

'入力規則の設定
With Range("B1")
.Validation.Delete '入力規則を削除
If Range(list).Item(1).Value <> "" Then '候補リストが空でなければ
.Validation.Add xlValidateList, Formula1:="=" & list '入力規則を設定&リストを追加
Else '候補リストが空ならば
.Value = "NO HIT" '選択リストの値は"NO HIT"
End If
End With
End Sub

質問した人からのコメント

2012/1/26 10:56:57

笑う ありがとうございます!解決しました!
数式の文字数制限だったのですね!
また,ruta_aj0104さんのような使用セル範囲を数式として設定する案は思いつかなかったです!ありがとうございました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる