スタッフブログ

Copilotに聞いてみた

2024年08月22日 スタッフブログ 平川 開発 

最近では色々なシーンで名前を聞くようになってきた生成AIですが、プログラミングもできるらしいですね。
 
Accessのフォームにタブコントロールを配置し、あるテキストボックスがそのタブコントロール上に配置されているか?を調べる処理が実際に必要になったので、生成AIに作成をお願いしていみました。
 

 
使用したのはSkypeで利用できるCopilotという生成AI。
「AccessVBAで、特定のコントロールがタブコントロール上に配置されているかどうかを調べる方法について教えてください」とリクエストしてみます。
 
すると、以下のような回答が返ってきました。

Access VBAで特定のコントロールがタブコントロール上に配置されているかどうかを調べるには、以下のようなコードを使用できます。
 
Function IsControlOnTabControl(ctrl As Control, tabCtrl As TabControl) As Boolean
  Dim page As Page
  Dim ctl As Control
 
  ’ 初期値をFalseに設定
  IsControlOnTabControl = False
 
  ’ タブコントロールの各ページをループ
  For Each page In tabCtrl.Pages
    ’ 各ページのコントロールをループ
    For Each ctl In page.Controls
      ’ コントロールが一致するか確認
      If ctl.Name = ctrl.Name Then
        IsControlOnTabControl = True
        Exit Function
      End If
    Next ctl
  Next page
 
End Function
 
この関数を使用することで、特定のコントロールが指定したタブコントロール上に存在するかどうかを確認できます。例えば、TextBox1がTabControl1上にあるかどうかを確認するには、以下のように呼び出します。
 
Dim result As Boolean
result = IsControlOnTabControl(Me.TextBox1, Me.TabControl1)
 
If result Then
  MsgBox “TextBox1はTabControl1上にあります。”
Else
  MsgBox “TextBox1はTabControl1上にありません。”
End If
 
このコードは、タブコントロールの各ページをループし、そのページ上のコントロールをチェックすることで、指定したコントロールがタブコントロール上にあるかどうかを判断します。

 
タブコントロール上の全コントロールを取得し、フォーム上のコントロールと名前を照合してタブコントロール上か否かを判定するプログラムを作成してくれました。
 
早速この処理を組み込んで実行してみます。

Dim strMsg As String
 
strMsg = “”
If IsControlOnTabControl(Me.Text0, Me.Tab1) = True Then
  strMsg = strMsg & Me.Text0.Name & “は” & Me.Tab1.Name & “上に配置されています。” & vbCrLf
Else
  strMsg = strMsg & Me.Text0.Name & “は” & Me.Tab1.Name & “上に配置されていません。” & vbCrLf
End If
 
strMsg = strMsg & “” & vbCrLf
 
If IsControlOnTabControl(Me.Text1, Me.Tab1) = True Then
  strMsg = strMsg & Me.Text1.Name & “は” & Me.Tab1.Name & “上に配置されています。” & vbCrLf
Else
  strMsg = strMsg & Me.Text1.Name & “は” & Me.Tab1.Name & “上に配置されていません。” & vbCrLf
End If
 
MsgBox strMsg

実際にちゃんと動きました。
 

 
思ったより良い回答でした。生成AIは調べものをするときにたまに使うと
間違えたり適当な答えが返ってきたりすることもあるため検証は必要ですが、
ロジックが思い浮かばないときの参考にするには十分に役に立ちそうです。
 
そのうちシステム構築のほとんどをAIがやってくれるようになるのかな。