有料枠から無料枠に戻してみたところ、出力されるVBAのコードがことごとく、すべからく要件を満たさない。
3.5Turbo君に要望を伝えるあたって、試行錯誤した結果得られた知見を共有する。
前提として、「あなたは一流のエンジニアです。以下の要件を満たすVBAのコードを提示してください。」という接頭辞を記述している。
「どうしてほしいか」ではなく「どうするか」を伝える。
NG指示1
- A列B列は青色にし、C列は飛ばす
- D列E列は青色にし、F列は飛ばす
- G列に達したら処理を停止する
この記述での出力は、
- H列を塗らない
- もっと列が続いた場合、連続して処理をしない
- B列を塗らなかったり、C列を塗るような処理をしてしまう
NG指示2
- A列、B列を青色にし、C列は飛ばす
- 2列塗って1列処理をしない、2列塗って1列処理しない、を繰り返す
- H列に達したら処理を停止する
この記述の場合も、
- 常に1列飛ばしで処理をする
といった内容で出力されることがある。
GOOD指示
- 変数paint_color_oneを定義し、値を1にする。
- 変数paint_color_twoを定義し、値を2にする。
- cells(1,paint_color_one)を青色にする。
- cells(1,paint_color_two)を青色にする。
- それぞれ2列加算する。
- paint_coloerがG列に達したら処理を停止する。
上記のように、「大まかなコード」を提示すると精度が上がる。
(paint_colorを定義して、cells(1,paint_coloer + 1)としても勿論OK。リファクタしてないベタコードの方が指示が通りやすい気がしたのでこうしているだけ。)
注意ポイント
- 列番号の相違はよくある。(CA列を85列目として処理したりする。正しくは79列目)
- 列番号の対応はこちらのサイトを参考にすると早い。