

ドットインストールのJavascriptゲームをVBAに変えてみます。VBAは超初心者です。
Excelの別記事: 条件付き書式
ストップウォッチ(Webから拾ったコード)
Private : モジュールの中、どこでも使える
Boolean型とは TrueとFalseの2種類の値をもつ
VBAどうやって記入する

赤矢印先が灰色だと「プロシージャ」(緑矢印)が選択できません。ThisWorkbookをダブルクリックします。
そうすると、選択できるようになります。

水色の矢印先の色が白くなり、「プロシージャ」を選択できるようになります。
ストップウォッチは、問題なく動きましたがタイマーが動いているときはExcelの他の操作するとエラーになります。Excelはシングルプロセスだからダメみたいです。

セルすべてを5mmX5mmの正方形にする

:_作り方の詳細はこちらの記事で
VBAはどこにコード書く

ThisWorkbookをダブルクリックします。

そうすると、「プロシージャ」の挿入が可能になります。
セルを選択し、背景色を指定する
1つのセルに色つける
Public Sub onecell()
Cells(3, 3).Select
Cells(3, 3).Interior.Color = RGB(0, 255, 0) '緑
End Sub
Interiorとは何?
Cells()の内部の設定という意味らしい。
色の指定方法:
colorindex : 56色が1~56の番号で指定できます(私の考え:コード量を減らすためかな)
WEBページ作成でよく使われるRGB()
複数のセルに背景色
Public Sub selplace()
Dim rSelect As Object
Set rSelect = Range(Cells(3, 3), Cells(7, 7))
rSelect.Select
rSelect.Interior.Color = RGB(255, 255, 0)
End Sub
あとで、変数を使うのでRangeよりもCellsの方が便利だと思います。
ゲームらしく、縦横同数の正方形に

Public Sub selplace()
Dim sameColor, difColor As Long
Dim size, startX, startY As Long
'色指定
sameColor = RGB(255, 0, 200)
'サイズ・スタート位置指定
size = 9
startR = 3 '行
startC = 3 '列
'Loop
For i = 1 To 3
For k = 1 To 3
Set cel = Range(Cells(startR, startC), Cells(startR + size, startC + size))
cel.Interior.Color = sameColor
startC = startC + size + 2
Next
startR = startR + size + 2
startC = 3
Next
End Sub
範囲選択範囲を罫線で囲む

コードの一部
With cel.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick '太さ
.ColorIndex = 2
End With
With cel.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick '太さ
.ColorIndex = 2
End With
With cel.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThick '太さ
.ColorIndex = 2
End With
ランダムに一箇所の色を変える
difCnt = Int(Rnd * 9) + 1
1~9の整数値を選ぶ
色指定RGBだと無理、HSLがいいみたい
RGBだと、似てる色を指定するのがよくわからない。
ドットインストールのようにHSLを使いたいがVBAはRGBのみなので、自分で関数をつくり変換しないとだめです。
構造体はModuleのみでしか宣言できない
コンパイル エラー:
オブジェクト モジュール内では、パブリック ユーザー定義型は定義できません。

HSLの正規化とはなに
Googleで拾ったサンプルコードを動かそうとしましたが、「正規化」という言葉がでてきてそこでつまずいています。何?? ここのコードを使わせてもらいました。
Function HSL2RGB色相をRGBに変換(ByVal H, ByVal S, ByVal L) As myRGB 'H,S,Lは正規化
ここでつまずきました。
Googleで調べましたが、答えないので自分なりに考えたのが
H/360で割0~1までの数に、SLは100で割る
セル値取得でエラー 表示「#」
「#」は表示しようとしてるけど、セル幅が少ないとかで表示されます。
するとセル取得もできなくなります。




コメント