Excel VBA質問箱 IV

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

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


8650 / 13644 ツリー ←次へ | 前へ→

【31846】入力規則の文字数制限 ぱぴよん 05/11/30(水) 23:32 質問[未読]
【31853】Re:入力規則の文字数制限 ichinose 05/12/1(木) 8:55 発言[未読]
【31903】Re:入力規則の文字数制限 ぱぴよん 05/12/2(金) 3:12 質問[未読]
【31908】Re:入力規則の文字数制限 ichinose 05/12/2(金) 7:43 発言[未読]
【32042】Re:入力規則の文字数制限 ぱぴよん 05/12/5(月) 12:45 お礼[未読]

【31846】入力規則の文字数制限
質問  ぱぴよん  - 05/11/30(水) 23:32 -

引用なし
パスワード
   入力規則で、一つのセルに10文字程度×50個のドロップダウンリストを
登録したいのですが、文字数制限(255バイト?)があるので、うまく
いきません。
何かよい方法はないでしょうか?

【31853】Re:入力規則の文字数制限
発言  ichinose  - 05/12/1(木) 8:55 -

引用なし
パスワード
   ▼ぱぴよん さん:
おはようございます。

>入力規則で、一つのセルに10文字程度×50個のドロップダウンリストを
>登録したいのですが、文字数制限(255バイト?)があるので、うまく
>いきません。
どんな操作を行った結果、うまくいかなかったのか?

手動操作で行ったのなら、この うまくいかなくなる
操作手順を記述してください。

VBAで入力規則を設定してみたけど・・・と言うことなら
コードを提示してください。

上記は、このようなことをするとうまくいかない
という例として貴重ですから、是非記述して下さい。


以下のコードを新規ブックの標準モジュールに貼り付けて実行してみてください。

'======================================================================
Sub 入力規則設定()
    For idx = 1 To 50
     Cells(idx, 1).Value = String(10, Chr(-32096 + (idx - 1)))
     Next
    Range("a1").EntireColumn.AutoFit
    With Cells(1, 2).Validation
     .Delete
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
          xlBetween, Formula1:="=$a$1:$a$50"
     End With
End Sub

アクティブシートのA1〜A50のデータを

セルB1の入力規則のリストメンバーとして設定しています。
>10文字程度×50個
とは この例題コードのようなことですか?

Excel2002で確認しましたが、50個のリストメンバーは
正常にセルB1のリストとして反映されています。

確認してみてください。

【31903】Re:入力規則の文字数制限
質問  ぱぴよん  - 05/12/2(金) 3:12 -

引用なし
パスワード
   ▼ichinose さん:
ご回答ありがとうございます。
セルを参照する事で入力規則に何文字でも入れれるのですね。

希望としては、xlBetween, Formula1:=のところで、下のように
して、セルを参照させないようにしたいのですが、あまりたくさん
文字を入れると「実行時エラー'-2147417848 (80010108)」という
エラーが表示されてしまいます。
何かよい方法はありますでしょうか?

xlBetween, Formula1:="ああああああああああ,いいい〜"

【31908】Re:入力規則の文字数制限
発言  ichinose  - 05/12/2(金) 7:43 -

引用なし
パスワード
   ▼ぱぴよん さん:
おはようございます。

>希望としては、xlBetween, Formula1:=のところで、下のように
>して、セルを参照させないようにしたいのですが、
どうしてですか?
せっかくのセルなのに・・・。

>何かよい方法はありますでしょうか?
どうしてもリストメンバーをコード内で指定したいのなら、
コンボボックスコントロールを使用する方法等を考えなければなりませんが、
入力規則のリストのセル参照でよいと思いますが・・・。

新規ブックに以下のコードをコピーして作動させてみてください。

・シートを最右端に追加し、追加したシートにリストメンバーサンプルを作成。
・作成シートを非表示
・リストメンバーを名前の定義で登録
・登録した名前を非表示
・最左端のシートのセルB1に入力規則を設定

なんて手順で設定を行っているコードです。
標準モジュールに
'=====================================================================
Sub 入力規則設定()
   Dim sht As Worksheet
   Dim nm As Name
   Set sht = Worksheets.Add(after:=Worksheets(Worksheets.Count))
   With sht
     For idx = 1 To 50
      .Cells(idx, 1).Value = String(10, Chr(-32096 + (idx - 1)))
      Next
     .Range("a1").EntireColumn.AutoFit
     .Visible = xlSheetVeryHidden
     End With
    '↑最右端にシートを追加し、そこにサンプル作成。作成シートは 非表示に設定
    Set nm = Names.Add("ListRange", "=" & sht.Range("a1:a50").Address(, , xlR1C1, True))
    '名前の定義で作成サンプルセル範囲を登録
    nm.Visible = False '定義した名前を非表示
    With Worksheets(1).Cells(1, 2).Validation
     .Delete
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
          xlBetween, Formula1:="=ListRange"
     End With
    Worksheets(1).Select
End Sub

こんな方法で良いのではないですか?

【32042】Re:入力規則の文字数制限
お礼  ぱぴよん  - 05/12/5(月) 12:45 -

引用なし
パスワード
   ▼ichinose さん:
色々考えた結果、おっしゃるとおりセルを参照させることにしました。
アドバイスをいただきありがとうございました。

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