Excel : VBA 実験室(色々試す)For 数独01

簡単な数独(3X3)をGoogle先生に聞きながら作ってみたいと思います。

マニュアル読むの嫌いな素人が、色々実験し結果を試してみます。

スポンサーリンク

Selection.Areas 何?

Selection.Areas.Count

選択してる範囲がいくつあるか

Selection.Areas.Application.Value

範囲選択されているものがなんのソフトかを取得する

Selection.Areas(1).Rows.Count

範囲選択されている範囲に含まれる「行数

Rows で Row ではない

12-5+1=8

Selection.Areas(1).Columns.Count

選択されている範囲の「列数」

Selection.Areas(1).Address

選択範囲のアドレス番地を取得

範囲選択されているセルの値

    For Each r In Selection.Areas(1)
        MsgBox (r.Value)
    Next

順番に値取得してます。

 

選択範囲を別の場所にコピー

Selection.Areas(1).Copy Range("A6")

選択範囲を「A6」開始でコピーします

枠までコピーされてしまう。

値のみをコピーする

Public Sub test()
    Selection.Areas(1).Copy
    Range("H8").PasteSpecial xlPasteValues
End Sub

これで値だけになります

VBAで範囲選択するには「シートのアクティブ」が必要

Public Sub getOneNum()
    Worksheets("Date").Activate 'これが大事、アクティブにしないと選択できない
    Worksheets("Date").Range(Cells(2, 2), Cells(4, 4)).Copy
End Sub

で範囲選択し、値をコピーするの無理なようです。

Rangオブジェクトの位置・大きさ取得

 

Cells().Top

Public Sub test()
    MsgBox (Cells(3, 3).Top)
End Sub

Cells().Left

Cells().Height

VBAで取得した値と、Excelで取得した値、微妙に違う。

Cells().Width

単位として、Point / 文字数があるようです。

シェイプ丸をセルを中心にして配置

Public Sub check()
    Dim x As Long
    Dim y As Long
    
    x = Cells(3, 3).Left + Cells(3, 3).Width / 2 - 90
    y = Cells(3, 3).Top + Cells(3, 3).Height / 2 - 90
    
    With ActiveSheet.Shapes.AddShape(msoShapeOval, x, y, 180, 180)
        .Fill.ForeColor.RGB = RGB(0, 0, 0)
        .Fill.Transparency = 1
        .Line.Weight = 7
        .Line.ForeColor.RGB = RGB(255, 0, 0)
        .Line.Transparency = 0.6
    End With
End Sub

重複しない乱数を作る

'------------------------------------------------
' 重複しない乱数3個
'-------------------------------------------------
Public Function getRndNum() As Variant()
    Dim flg(1 To 9) As Boolean
    Dim getNum(3) As Variant

    For i = 0 To 2
        Do
            getNum(i) = Int(Rnd * 9)
            If flg(getNum(i)) = False Then
                flg(getNum(i)) = True
                Exit Do
            End If
        Loop
    Next
    getRndNum = getNum
End Function

 

コメント

タイトルとURLをコピーしました