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がやってくれるようになるのかな。