VBAマクロを自動作成する無料アプリ

VBAコードの知識不要😊ChatGPTで機能を追加

MENU

ChatGPTでコードを整理(リファクタリング)する

「NoCodeVBA」にようこそ!

「NoCodeVBA」はエクセルVBAマクロを作成できる無料アプリです。

 

「NoCodeVBA」は制御の都合で、空白行やインデントのズレが生じます。

そこて、ChatGPTを使いコードを整理(リファクタリング)してみます。

ChatGPTは無料で使えるブラウザのMicrosoft EdgeにあるGPT-4を搭載の「BingのAIチャット」利用します。

 

事例

下記の内容でリファクタリングをします。

  • 使用していない変数の宣言を削除
  • 空白行を削除
  • インデントを揃える
  • Callする側にScreenUpdatingとDisplayAlertsを入れ、Callされる側を削除
  • 不要なSelectやOffsetを省略

 

赤字が修正する部分で、青字がリファクタリングした結果です

Sub 連続実行()
 Call マクロA
 Call マクロB
 Call マクロC
End Sub

 

Sub マクロA() '文字入力
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
セル範囲 = "a1:a1"
Range(セル範囲).Select
Selection.Offset(0, 0).Formula = "りんご"
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub マクロB() '書式
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止

Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
セル範囲 = "a1:a1"
Range(セル範囲).Select
Selection.Offset(0, 0).Font.Bold = True
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub マクロC() '色変更
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
セル範囲 = "a1:a1"

 
'◆条件分岐
For Each セル In Range(セル範囲).Cells
         If セル.Interior.Color = RGB(255, 255, 0) Then
         セル.Select
      
      Selection.Offset(0, 0).Font.Color = RGB(255, 0, 0)

   End If
Next
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

Sub 連続実行()
 '画面描画と警告表示を停止
 Application.ScreenUpdating = False
 Application.DisplayAlerts = False
 '各マクロを呼び出す
 マクロA
 マクロB
 マクロC
 '画面描画と警告表示を再開
 Application.DisplayAlerts = True
 Application.ScreenUpdating = True
End Sub

 

Sub マクロA() '文字入力
 Dim セル範囲 As String '使用していない変数の宣言を削除
 Sheets("Sheet1").Select
 セル範囲 = "a1:a1"
 Range(セル範囲).Formula = "りんご" 'SelectとOffsetを省略
End Sub
 
Sub マクロB() '書式
 Dim セル範囲 As String '使用していない変数の宣言を削除
 Sheets("Sheet1").Select
 セル範囲 = "a1:a1"
 Range(セル範囲).Font.Bold = True 'SelectとOffsetを省略
End Sub
 
Sub マクロC() '色変更
 Dim セル範囲 As String, セル As Range '使用していない変数の宣言を削除
 Sheets("Sheet1").Select
 セル範囲 = "a1:a1"
 
'◆条件分岐
 For Each セル In Range(セル範囲).Cells
   If セル.Interior.Color = RGB(255, 255, 0) Then
     セル.Font.Color = RGB(255, 0, 0) 'SelectとOffsetを省略
   End If
 Next
End Sub

 

きれいになりました!

 

Bingの「チャット モード」に入力したプロンプトです

```で囲んだVBAコードを次の内容でリファクタリングしてください。
・連続する空白を削除
・改行文字'/n'のみの行を削除
・インデントを揃える
・使用していない変数の宣言を削除
・Callする側にScreenUpdatingとDisplayAlertsを入れ、Callされる側を削除する
・不要なSelectやOffsetを省略


```
Sub 連続実行()
 Call マクロA
 Call マクロB
 Call マクロC
End Sub

 

Sub マクロA() '文字入力
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
セル範囲 = "a1:a1"
Range(セル範囲).Select
Selection.Offset(0, 0).Formula = "りんご"
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub マクロB() '書式
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Sheets("Sheet1").Select
セル範囲 = "a1:a1"
Range(セル範囲).Select
Selection.Offset(0, 0).Font.Bold = True
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub マクロC() '色変更
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
セル範囲 = "a1:a1"
 
'◆条件分岐
For Each セル In Range(セル範囲).Cells
         If セル.Interior.Color = RGB(255, 255, 0) Then
         セル.Select
      
      Selection.Offset(0, 0).Font.Color = RGB(255, 0, 0)

   End If
Next
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
```

上に指示を書き、下にコードを```で囲って添付しています。

(‘‘‘で囲むとコードを意味します。```は半角英数モードでShiftキーと@のキーを同時に押します)

Bingのチャット モードの使い方

 

※初めて利用するときは、登録が必要です。

www.microsoft.com

 

ブラウザのMicrosoft Edge「BingのAIチャット」を立ち上げます



上記のような指示とコードを入力して実行します。

例えば、

  • 変数を英語表記にしたり、
  • Callの使用をやめて一つのプロシージャにまとめたり、
  • 3か所にあるSheets("Sheet1").Selectとセル範囲 = "a1:a1"を、1つにまとめる

こともできます。

なおChatGPTの改行は、ShiftキーとEnterキーを同時に押します。

 

「BingのAIチャット」に文章(プロンプト)を入力した画面です

 


下記の回答を、コピーしてエクセルのVBE画面に貼り付けます。

 

ぜひ、「BingのAIチャット」でVBAコードをリファクタリングしてみてください。😊