質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

1回答

1751閲覧

Access VBA Excelの入力規則設定

Yoshikun_0945

総合スコア224

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/01/08 06:03

##使用ソフト・プログラミング言語
使用ソフト:Access2016
言語:VBA

前提・実現したいこと

Access VBAにてExcelファイルを開き、数値を入力するセルにデータの入力規則としてドロップダウンリストを設定するコードを記述いたしました。

発生している問題・エラーメッセージ

ドロップダウンリストの行で、

VBA

1『実行時エラー'5' プロシージャの呼び出しまたは、引数が不正です』

というエラーメッセージが表示されてしまいました。
どのように修正すればよろしいでしょうか?

該当のソースコード

Dim Row, Col, RowMax, ColMax, Li() As Integer Row = 2: Col = 1: RowMax = 1: ColMax = 1 Dim i, j, k As Integer: k = 0 '繰り返し処理用カウント変数を宣言する Dim Exf As String: Exf = Dir(Path & "Q*.xlsx") 'エクセルファイル名用変数の宣言 j = UBound(QName): j = j / 2 '繰り返しの上限を設定する(クエリの数÷2) Dim Max As Integer '商品の入荷数量用変数を宣言する For i = 0 To j - 1 'Excelファイルの数だけ繰り返す '実行時バインディング Set AppObj = CreateObject("Excel.Application") '編集を実施するワークブックを開く Set WBObj = AppObj.WorkBooks.Open(Path & Exf) '編集を実施するワークシートを設定する(最後尾のシート) Set WsObj = WBObj.Worksheets(1) AppObj.Visible = True 'Excelアプリケーションを表示する WBObj.Worksheets(1).Select 'アクティブシートを変更する【先頭へ】 'エクセル用の定数を宣言する Const xlValidateList = 3: Const xlValidAlertWarning = 2 Const xlValidAlertStop = 1 '現在参照中の行が空欄になるまで繰り返す Do While WsObj.Cells(Row, 1).Value <> "" Max = WsObj.Cells(Row, 4).Value '上限数量を取得する If Max > 40 Then '40を超過した場合 Max = 40 '上限値を40とする End If ReDim Li(Max) '配列の要素数を更新する For k = 0 To Max '配列の要素数分繰り返す Li(k) = k '配列に数値を格納する Next '数量を入力するセル For Col = 6 To 10 Step 2 '入力規則を設定する With WsObj.Cells(Row, Col).Validation .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Formula1:=Join(Li, ",") End With Next Row = Row + 1 Loop Row = 1 Next

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

既に入力規則が設定されているのでしょう。
設置する前にDeleteしてからAddすることで要件満たせませんか?

With WsObj.Cells(Row, Col).Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Join(Li, ",") End With

投稿2020/01/08 07:30

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問