[ユーザー設定リスト]の最大項目数は総文字数によって変動します。
1行の文字数が全て1文字の場合、1,000行です。
4文字×400行。
9文字×200行。
19文字×100行。
99文字×20行。
行ごとに『,』の区切り文字がありますので、それを含めて1,999文字までです。
1行あたりの最大文字数は255文字まで。
(XL97,2000,2003,2007。macは確認してません)
検証してみたい方は下記のようなVBAコードで可能です。
Sub test1()
Const y As Long = 1000 '作成する漢字データの行数
Const x As Long = 4 '1行あたりの文字数
Dim n As Long
Dim v As Variant
On Error GoTo errHndlr
With Sheets.Add
With .Range("A1").Resize(y)
'ユニークな漢字データをCHAR関数で設定
.Formula = "=REPT(CHAR(ROW(A12321)+INT((ROW(A1)-1)/94)*162)," & x & ")"
.Value = .Value
'CustomList登録
Application.AddCustomList ListArray:=.Cells
End With
With Application
v = .GetCustomListContents(.CustomListCount)
'登録したCustomList削除
.DeleteCustomList ListNum:=.CustomListCount
End With
n = UBound(v)
.Range("B1").Resize(n) = Application.Transpose(v)
.Range("C1:D1").Value = Array("データ行数", "登録できた行数")
.Range("C2:D2").Value = Array(y, n)
End With
errHndlr:
With Err()
If .Number <> 0 Then MsgBox .Number & ":" & .Description
End With
End Sub
254個というのは[リストの項目]のリストボックスの【表示上の制限】です。
実際に登録されている行数とは違います。
Sub test2()
Const y As Long = 500
Dim n As Long
Dim v As Variant
On Error GoTo errHndlr
With Sheets.Add
With .Range("A1").Resize(y)
.Formula = "=TEXT(ROW(),""0000"")"
.Resize(, 2).NumberFormat = "@"
.Value = .Value
Application.AddCustomList ListArray:=.Cells
End With
With Application
v = .GetCustomListContents(.CustomListCount)
'.DeleteCustomList ListNum:=.CustomListCount '後で手動削除してください
End With
n = UBound(v)
.Range("B1").Resize(n).Value = Application.Transpose(v)
.Range("C1:D1").Value = Array("データ行数", "登録できた行数")
.Range("C2:D2").Value = Array(y, n)
End With
errHndlr:
With Err()
If .Number <> 0 Then MsgBox .Number & ":" & .Description
End With
End Sub
お礼
返信が遅れました。 》 1行の文字数が全て1文字の場合、1,000行登録できました 有益な情報をありがとうございました。 2010/04/02