人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAについて教えてください。AccessVBAからEXCELにファイルを出力したいです。TABLE1のIDフィールドにIDとして連番が01,02,03...と入力されています。出力フィールドにはデータは何も入っていません。

Excel出力時、A列にID(連番)、B列に「北海道、東北、関東、関西、四国、九州」とプルダウンで選択できるようにしたいです。つまり、B列はテーブルからデータは持ってこずに、Excelの入力規則→リスト→リストに上記のデータを入力した形で出力したいです。
A列が10行出力したら、B列も同じように10行出力します。11行目はプルダウンが表示されないようにしたいです。

rangeオブジェクトや.Add TYPE:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= xlBetween, Formula1:=あたりを使えばいいとは思うのですが、うまくいきません。VBAでどのように書いたら、上記の事が実現可能になるでしょうか?

●質問者: akaired
●カテゴリ:コンピュータ インターネット
✍キーワード:ADD Excel VBA オブジェクト データ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● HALSPECIAL
●60ポイント

こんな感じでいいでしょうか?

Option Explicit

Public Sub 実行()
 Const xlValidateList As Integer = 3
 Const xlValidAlertStop As Integer = 1
 Const xlBetween As Integer = 1
 Dim xl
  'エクセルオブジェクトを作成します
 Set xl = CreateObject("Excel.Application")
  'エクセル画面を表示します
 xl.Visible = True
  '新しいワークブックを開きます
 xl.Workbooks.Add
 xl.ActiveSheet.Range("A1").Select
 
 
 Dim CN As ADODB.Connection
 Dim RS As ADODB.Recordset
 Dim SQL As String
 
  '接続
 Set CN = CurrentProject.Connection
 
  'レコードセットを取得
 Set RS = New ADODB.Recordset
 SQL = "SELECT * FROM TABLE1 ORDER BY ID"
 RS.Open SQL, CN, adOpenKeyset, adLockOptimistic
 
  '確認
 Do Until RS.EOF
 xl.ActiveCell.Value = RS!ID
 With xl.ActiveCell.Offset(0, 1).Validation
 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
 xlBetween, Formula1:="北海道,東北,関東,関西,四国,九州"
 End With
 xl.ActiveCell.Offset(1, 0).Activate
 RS.MoveNext
 Loop
 
  '終了
 RS.Close: Set RS = Nothing
 CN.Close: Set CN = Nothing


  'エクセルオブジェクトの破棄
 Set xl = Nothing

End Sub


関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ