2014年07月14日18:46

無料のオフィスソフト、LibreOfficeのCalcでシェルピンスキー・ギャスケットを描くプログラムを作りました。
YouTubeにアップしたので、見てください。
下は作成したプログラムのコードです。
LibreOfficeで遊んでみよう!シリーズその1
カテゴリー │パソコン教室│LibreOffice

無料のオフィスソフト、LibreOfficeのCalcでシェルピンスキー・ギャスケットを描くプログラムを作りました。
YouTubeにアップしたので、見てください。

下は作成したプログラムのコードです。

dim cellRange as object 'セルの範囲
dim cell as object 'セル
dim sheet as object 'シート
Sub draw 'シェルピンスキーギャスケットを描く
dim x1 as double, y1 as double, x2 as double, y2 as double
dim x as integer, y as integer
dim randomNumber as integer, i as integer
clearSheet(1000, 1000) '設定した範囲のセルをクリア
changeWH(200) 'セルの幅、高さを200に設定
randomize '乱数発生関数を初期化
x1 = 0
y1 = 0
'描く
for i = 1 to 5000 '5000回繰り返す
'ランダムに1~3の数字を生成する
randomNumber = int(3 * rnd() + 1)
select case randomNumber
case 1
x2 = 0.5 * x1 + 0.25
y2 = 0.5 * y1 + 0.25 * sqr(3)
case 2
x2 = 0.5 * x1 + 0.5
y2 = 0.5 * y1
case 3
x2 = 0.5 * x1
y2 = 0.5 * y1
end select
x = 100 * x2
y = -100 * y2 + 89
'セルの位置を取得
cell = thiscomponent.sheets(0).getcellbyposition(x, y)
'セルの背景色を黒にする
cell.CellBackColor = RGB(0,0,0)
x1 = x2
y1 = y2
next i
End Sub
'設定した範囲のセルをクリアする関数
sub clearSheet(x as integer, y as integer)
sheet = thiscomponent.sheets(0)
cellRange = sheet.getCellRangeByPosition(0,0,x,y)
cellRange.clearContents(32)
end sub
'セルの幅、高さを揃えて設定する関数
sub changeWH(h as integer)
sheet = thiscomponent.sheets(0)
sheet.getRows().height = h
sheet.getColumns().width = sheet.getRows().height
end sub
この記事へのコメント
こんにちは
LibreOfficeでこんなことできるんですね!
楽しそうです、自分もこんなプログラムが書けたらなあw
LibreOfficeでこんなことできるんですね!
楽しそうです、自分もこんなプログラムが書けたらなあw
Posted by オオハシ
at 2014年07月14日 19:57

オオハシさん、コメントありがとうございます。
プログラムは前にVisual Basicで作ったものを作り替えました。プログラムはほとんどいろんなところからのコピペです。偉大な先人たちのおかげです。
LibreOfficeはただいま勉強中です。エクセルのVBAと比べると、LibreOfficeのBasicは少し面倒です。本やネットで調べています。
プログラムは前にVisual Basicで作ったものを作り替えました。プログラムはほとんどいろんなところからのコピペです。偉大な先人たちのおかげです。
LibreOfficeはただいま勉強中です。エクセルのVBAと比べると、LibreOfficeのBasicは少し面倒です。本やネットで調べています。
Posted by KTパソコンスクール at 2014年07月15日 09:13