- ベストアンサー
列を移動させるvbaコードを教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> vbaで可能なのでしょうか? 可能です。 VBAで、データシートでのフィールドの並び順を変えるには、 コントロールの「ColumnOrder」プロパティを使用します。 以下、データシート表示しているフォームの名前を「DS1」、 列を操作するためのポップアップ型フォームの名前を「PF1」 とした場合のコード例になります: 'PF1上の「列移動」コマンドボタンのクリック時イベント Private Sub 列移動_Click() '「DS1」フォームの「フィールド2」を、左端に移動 '(ColumnOrderは、一番左端が1になります) Forms!DS1!フィールド2.ColumnOrder = 1 End Sub ・・・以上です。 なお、ここでの「フィールド2」は、『コントロール ソース』となる フィールドの名前ではなく、データの表示に使用している コントロールの名前(テキストボックス名など)になるので、 注意してください。 (データシート型にしているので、通常より間違いやすいかと: 「フィールド名=コントロール名」で作成している場合は 特に問題ありません) ~~~~~~~~~~~~~~~~~~~~~~~ 実際に使用する場合は、対象フィールドや移動する位置も ユーザーが指定することになるでしょうから、例えば以下の ような形になるかと思います: Private Sub 列移動_Click() 'エラー発生時は「エラー処理:」の行に飛ばす On Error Goto エラー処理 Dim Frm As Form, Ctl As Control Dim sCName As String, iOrder As Integer '「DS1」フォームの『対象列』コンボボックスで移動する 'フィールドを、『移動先』テキストボックスで移動先を、 'それぞれ指定 sCName = Me!対象列 iOrder = Me!移動先 '対象フォームとコントロールを変数に格納 Set Frm = Forms!DS1 Set Ctl = Frm.Controls(sCName) '指定したコントロールを、指定した位置に移動 Cntl.ColumnOrder = iOrder 終了処理: '明示的にメモリを解放した後、処理を終了 Set Ctl = Nothing Set Frm = Nothing Exit Sub エラー処理: 'エラー発生時はMsgBoxでその説明を表示して、処理を中断 MsgBox Err.Number & ":" & Err.Description, vbCritical ,Me.Name & " 列移動" Resume 終了処理 End Sub
お礼
大変参考になりました。ありがとうございました。