CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

VBAで簡易CADチャットボットを作った

2023-05-13 20:12:31 | VBA

https://blog.goo.ne.jp/nichikon2/e/bc53b832fb46b2466196b41cc1cdf2ff

の記事で作ったプログラムをちょっと改造してみた。

ユーザーが入力した文字の中に「円」または「直線」が含まれているかどうか判定し、

もし含まれていた場合のみ直線または円を描くプログラムを実行するようにした。

ちなみにbardでは何回も修正するように依頼したのだが、

全く直らないどころか同じ返答を繰り返すばかりだったので、

ChatGPTに頼んでみたら、一発で直った。

それが次のコードである。

Sub CAD()
Dim userInput As String
Dim hasLine As Boolean
Dim hasCircle As Boolean
userInput = InputBox("何をしましょうか?")
hasLine = InStr(userInput, "直線") > 0
hasCircle = InStr(userInput, "円") > 0

If hasLine Then
    MsgBox "始点と終点の座標を指定してください。"
    
    Dim StartX As Integer
    Dim StartY As Integer
    Dim EndX As Integer
    Dim EndY As Integer
    
    StartX = InputBox("始点のX座標を入力してください。")
    StartY = InputBox("始点のY座標を入力してください。")
    EndX = InputBox("終点のX座標を入力してください。")
    EndY = InputBox("終点のY座標を入力してください。")
    
    With ActiveSheet.Shapes.AddLine(StartX, StartY, EndX, EndY)
        .Line.Weight = 2 ' Set the line thickness to 2 points
    End With
ElseIf hasCircle Then
    MsgBox "中心の座標と半径を入力してください。"
    
    Dim centerX As Variant
    Dim centerY As Variant
    Dim radius As Variant
    Dim drawingSheet As Worksheet
    Dim newCircle As Shape
    
    Set drawingSheet = ActiveSheet
    centerX = Application.InputBox("Enter the x-coordinate of the center of the circle", "Center X", Type:=1)
    centerY = Application.InputBox("Enter the y-coordinate of the center of the circle", "Center Y", Type:=1)
    radius = Application.InputBox("Enter the radius of the circle", "Radius", Type:=1)
    Set newCircle = drawingSheet.Shapes.AddShape(msoShapeOval, _
     -radius, centerY - radius, radius * 2, radius * 2)
    
    With newCircle.Line
        .Weight = 2 ' Set the line thickness to 2 points
        .DashStyle = msoLineSolid ' Set the line style to solid
        .ForeColor.RGB = RGB(255, 0, 0) ' Set the line color to red
    End With
    newCircle.Fill.Visible = msoFalse ' Set the fill to transparent
Else
    MsgBox "そのような操作はできません。"
End If
End Sub

てなわけで今回はChatGPTの勝ち。



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。