Excel VBA質問箱 IV

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

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


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

【33475】セルに入力制限を設定したい mono 06/1/12(木) 16:49 質問[未読]
【33479】Re:セルに入力制限を設定したい Jaka 06/1/12(木) 17:15 発言[未読]
【33486】Re:セルに入力制限を設定したい mono 06/1/12(木) 17:52 発言[未読]
【33487】Re:セルに入力制限を設定したい Jaka 06/1/12(木) 18:05 発言[未読]
【33489】Re:セルに入力制限を設定したい mono 06/1/12(木) 19:39 お礼[未読]
【33488】Re:セルに入力制限を設定したい awu 06/1/12(木) 18:22 発言[未読]
【33497】Re:セルに入力制限を設定したい Jaka 06/1/13(金) 9:21 発言[未読]
【33490】Re:セルに入力制限を設定したい kobasan 06/1/12(木) 19:59 発言[未読]
【33491】Re:セルに入力制限を設定したい mono 06/1/12(木) 20:21 お礼[未読]

【33475】セルに入力制限を設定したい
質問  mono  - 06/1/12(木) 16:49 -

引用なし
パスワード
   こんにちは、この掲示板に投稿するのは初めてです
よろしくお願いします。

「メンテナンス」というシートのD列に入力制限をかけようとしています。
制限する値は「ワーク」というシートのA列に入力してあります。
この掲示板の過去記事を拝見して、入力制限のかけかたを研究したのですが、
どうにもうまくいきません。


別シートのデータを参照するために、ワークシートのデータの書き込んであるセルを選択し、
名前をつけたいのですが、どのようにすればよいのでしょうか。
(セルの範囲を選択して、ツールバーの「挿入」→「名前」→「定義」とするやつです。)
ワークシートのA列のデータの件数は、動的に変化するので、ボタン押下時のみ参照しに行きたいです。
※INDIRECT関数はVBA使えないんでしょうか?


Sub test()

  With ThisWorkbook.Worksheets("メンテナンス") 
    Range("D11:D40").Select
    Application.CutCopyMode = False
    With Selection.Validation
     .Delete
     Dim rageCell As Range
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
     xlBetween, Formula1:="=ListSource"

     .IgnoreBlank = True
     .InCellDropdown = True
     .ErrorMessage = "入力する値をドロップダウンリストから選択してください。"
     .IMEMode = xlIMEModeNoControl
     .ShowInput = True
     .ShowError = True
    End With
  End With
End Sub

【33479】Re:セルに入力制限を設定したい
発言  Jaka  - 06/1/12(木) 17:15 -

引用なし
パスワード
   ▼mono さん:
>※INDIRECT関数はVBA使えないんでしょうか?
って、どこにどんな風に使うのか解りませんが、

>     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
>     xlBetween, Formula1:="=ListSource"
                 ↑
             これって、エクセル関数と同じで、
             結局は文字が入るんですよ。
             ここに
             "=INDIRECT(" & "Sheet1!A1:A10" & ")"
             って事でしょうか?
             "Sheet1!A1:A10"は、変数でも良いし...。

【33486】Re:セルに入力制限を設定したい
発言  mono  - 06/1/12(木) 17:52 -

引用なし
パスワード
   ▼Jaka さん:
>>     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
>>     xlBetween, Formula1:="=ListSource"
>                 ↑
>             これって、エクセル関数と同じで、
>             結局は文字が入るんですよ。
>             ここに
>             "=INDIRECT(" & "Sheet1!A1:A10" & ")"
>             って事でしょうか?
>             "Sheet1!A1:A10"は、変数でも良いし...。


うーん・・・・。

過去掲示板の記事も参考にさせていただいたのですが、以下のコードを試して
「アプリケーションの定義エラー」
となります。

Err.Descriptionを見ても、
「アプリケーション定義またはオブジェクト定義のエラーです。」
となります・・。
※WORKはシート名です。


Sub test()
  With ThisWorkbook.Worksheets("メンテナンス") 
    Range("D11:D40").Select
    Application.CutCopyMode = False
    With Selection.Validation
     .Delete
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=INDIRECT(" & "WORK!A1:A10" & ")"

     .IgnoreBlank = True
     .InCellDropdown = True
     .ErrorMessage = "入力する値をドロップダウンリストから選択してください。"
     .IMEMode = xlIMEModeNoControl
     .ShowInput = True
     .ShowError = True
    End With
  End With
End Sub

【33487】Re:セルに入力制限を設定したい
発言  Jaka  - 06/1/12(木) 18:05 -

引用なし
パスワード
   すみません。
"=INDIRECT(""" & "WORK!A1:A10" & """)"

【33488】Re:セルに入力制限を設定したい
発言  awu  - 06/1/12(木) 18:22 -

引用なし
パスワード
   まず一行目の

> With ThisWorkbook.Worksheets("メンテナンス")

が、何処にも反映されていないようですが・・・ このままでは無くても同じ。

>・・・Formula1:="=INDIRECT(" & "WORK!A1:A10" & ")"
    ↓
・・・Formula1:="=INDIRECT(""WORK!A1:A10"")" と違いますか?

全部文字列だから & は要らないと思うが・・・

INDIRECT関数の使い方を調べてみましょう。

【33489】Re:セルに入力制限を設定したい
お礼  mono  - 06/1/12(木) 19:39 -

引用なし
パスワード
   ▼Jaka さん:
>すみません。
> "=INDIRECT(""" & "WORK!A1:A10" & """)"
おお!
出来ました。
ありがとうございました。

INDICT関数はヘルプを調べたり、検索かけたりもしたのですが、
今いち使い切れていませんでした。

思い切って聞いてみてよかったです。
ありがとうございます。

【33490】Re:セルに入力制限を設定したい
発言  kobasan  - 06/1/12(木) 19:59 -

引用なし
パスワード
   ▼mono さん 今晩は。

>別シートのデータを参照するために、ワークシートのデータの書き込んであるセルを選択し、
>名前をつけたいのですが、どのようにすればよいのでしょうか。
>(セルの範囲を選択して、ツールバーの「挿入」→「名前」→「定義」とするやつです。)
>ワークシートのA列のデータの件数は、動的に変化するので、ボタン押下時のみ参照しに行きたいです。

範囲名を定義してやってみました。こんな感じでしょうか。

Sub test()
Dim rw As String
  rw = Sheets("ワーク").Range("A56336").End(xlUp).Row
  '範囲名を定義
  ThisWorkbook.Names.Add Name:="List範囲", RefersTo:="=Sheet2!A$1:A$10"
  
  '入力規則リスト形式を作成
  With Sheets("メンテナンス").Range("D11:D40").Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:="=List範囲"
    '
    .IgnoreBlank = False
    .ErrorMessage = "入力する値をドロップダウンリストから選択してください。"
  End With
End Sub

【33491】Re:セルに入力制限を設定したい
お礼  mono  - 06/1/12(木) 20:21 -

引用なし
パスワード
   ▼kobasan さん:
>▼mono さん 今晩は。
>
>>別シートのデータを参照するために、ワークシートのデータの書き込んであるセルを選択し、
>>名前をつけたいのですが、どのようにすればよいのでしょうか。
>>(セルの範囲を選択して、ツールバーの「挿入」→「名前」→「定義」とするやつです。)
>>ワークシートのA列のデータの件数は、動的に変化するので、ボタン押下時のみ参照しに行きたいです。
>
>範囲名を定義してやってみました。こんな感じでしょうか。
>
>Sub test()
>Dim rw As String
>  rw = Sheets("ワーク").Range("A56336").End(xlUp).Row
>  '範囲名を定義
>  ThisWorkbook.Names.Add Name:="List範囲", RefersTo:="=Sheet2!A$1:A$10"
>  
>  '入力規則リスト形式を作成
>  With Sheets("メンテナンス").Range("D11:D40").Validation
>    .Delete
>    .Add Type:=xlValidateList, Formula1:="=List範囲"
>    '
>    .IgnoreBlank = False
>    .ErrorMessage = "入力する値をドロップダウンリストから選択してください。"
>  End With
>End Sub


こんばんは
お返事ありがとうございます。
教えていただいたコードで、別シートのセルに名前をつけて
参照することができました。

大変助かりました ありがとうございました。

【33497】Re:セルに入力制限を設定したい
発言  Jaka  - 06/1/13(金) 9:21 -

引用なし
パスワード
   >>・・・Formula1:="=INDIRECT(" & "WORK!A1:A10" & ")"
    ↓
>・・・Formula1:="=INDIRECT(""WORK!A1:A10"")" と違いますか?
>全部文字列だから & は要らないと思うが・・・
え〜と、わざわざ分けた理由は、
"WORK!A1:A10" の部分を、変数として利用できるといった意味も入っています。

aaa = "WORK!A1:A10"
・・・Formula1:="=INDIRECT(""" & aaa & """)"

とすれば、
aaa = selection.address(0,0) 等などでも、簡単に指定できるといった事です。

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