Excelマクロでグラフ作成2

 ensyu-c, lecture, PcTips, software, VBA  Excelマクロでグラフ作成2 はコメントを受け付けていません。
9月 102019
 

Excelマクロでグラフ作成1では、簡単なグラフを描画しました。

ここからは、タイトルや縦軸の数字やいろいろな調整をしていきます。

  • まず、グラフの上にタイトルを入れましょう
  • 1行目の下に、
    Dim Title As String
    Title = Range(“A1”).Value
    の2行を入力します
  • .SetSourceData Source:=・・・・の行の下に
    .HasTitle = True
    .ChartTitle.Text = Title
    の2行を入力します
  • それぞれの意味は、
    Dim Title As String は文字列としてタイトルを宣言(用意)する
    Title = Range(“A1”).Value は A1に入力されている値をタイトルに代入する
    .HasTitle = True  はタイトルを表示するスィッチを入れる
    .ChartTitle.Text = Title はTitleに代入された文字をタイトルのテキストに設定する、です
    マクロ2
  • 注)コード上で「’棒グラフの作成」という文は、緑色で表示されています
    このように ‘(シングルクォーテーション)で始まる文はコメントです
    実行されませんので、メモ代わりに何をしている文なのかを書いています
  • 上書き保存します
  • 緑の▶をクリックし、実行しましょう
    グラフ2
  • 重なった下のグラフはいらないので、クリックして選択した後、
    deleteキーを押して削除します
  • 次に縦軸の数値120を100に変えていきます
    .ChartTitle.Text = Titleの下の行に、
    .Axes(xlValue).MaximumScale = 100 と入力します
  • 実行すると、縦軸が100までのスケールになったことがわかります。
    スケール
  • さらに、その下(End Withの上)に
    For i = 1 To .SeriesCollection.Count
    .SeriesCollection(i).HasDataLabels = True
    Next i
    と入力します
  • 実行すると、グラフの棒の上にデータラベル(各教科の各人の点数)が表示されます
    データラベル
  • 後半のコード
    ここまでのコード

1.VBA(Excelマクロ)の始め方
2.Excelマクロでグラフ作成1

Excelマクロでグラフ作成1

 ensyu-c, lecture, PcTips, software, VBA  Excelマクロでグラフ作成1 はコメントを受け付けていません。
9月 092019
 

VBA(Excelマクロ)の始め方 では、マクロを使うため準備をしました。

ここでは、Excelマクロを使ってグラフを作成していきます。

  1. まず、下のような表を作成します
    表
  2. 「開発」をクリック
    開発タブ
  3. 「Visual Basic」をクリック
  4. 「挿入」ー「標準モジュール」をクリック
    標準モジュール
  5. Module1が表示されます
    モジュール1
  6. 右側のコードの欄をクリック
    editor
  7. 下の文章(プロシージャ文)を入力します

    Sub graphtest()
    With ActiveSheet.Shapes.AddChart.Chart
    ‘棒グラフの作成
    .ChartType = xlColumnClustered

    ‘データ範囲の指定
    .SetSourceData Source:=Sheets(“Sheet1”).Range(“A3:D6”)
    End With
    End Sub

  8. 上書き保存をクリック(もしくは、Ctrlを押しながら、Sを押す)、保存しておきましょう
    上書き保存
  9. ファイル名を入力
  10. ファイルの種類を「Excelマクロ有効ブック(*.xlsm)」に変えます
    xlsm
  11. 「保存」をクリック
    vba文
  12. 緑の▶をクリック(もしくは、F5のキーを押す)
    run

    1. もしくは、緑の▶の代わりに、Excel上の「マクロ」をクリックし、マクロメニュー
      表示されたマクロのウィンドウから、
      「graphtest」を選び、「実行」をクリックしても動きます
      実行
  13. すると、グラフが表示されます
    graph
    よく見ると縦軸の値が120になっています。
    100点満点のテストを棒グラフにしたものですので、100にしたいところです。ここはあとの方で直していきます。
  14. その前にまず、プロシージャ(関数、サブルーチン)の中身をみていきましょう
    1. Sub と End Sub で囲んだ中に、実行したい処理を書いていきます
    2. Subのあとには何をやっているかわかるような名前を入力します(上の図では、graphtest()と入力、このかっこ()をとるとエラーになるのでかならず入力のこと)
    3. 以下、それぞれの文の意味を順番に
      1. With ActiveSheet.Shapes.AddChart.Chart は、
        ・現在Activeなシートにチャート(グラフ)を追加する
        ・Withを使うことで、ドット. から以降だけの入力で済みます
      2. .ChartType = xlColumnClustered
        ・グラフの種類は棒グラフ(ドット. は必ず必要)
        ・Withを使わなかった場合、
        ActiveSheet.Shapes.AddChart.Chart.ChartType = xlColumnClusteredと長い文章を打たなければいけない
      3. .SetSourceData Source:=Sheets(“Sheet1”).Range(“A3:D6”)
        ・グラフのもとになるデータはシート1のA3からD6で囲まれた範囲とする
      4. End With
        ActiveSheet.Shapes.AddChart.Chartの中の機能を使うことを終了する

Excelマクロでグラフ作成2 につづく

VBA(Excelマクロ)の始め方

 ensyu-c, lecture, PcTips, software, VBA  VBA(Excelマクロ)の始め方 はコメントを受け付けていません。
9月 072019
 

VBA(Visual Basic for Applications)
ExcelやAccessなどで利用できるプログラミング言語の1つ。

  • 手動で行っている定型的な業務などを自動化させることができる
  • 独自のフォームなどを作成してExcelをアプリケーションのように見せることができる

マクロとVBA

  • マクロは操作を自動化するための機能
  • VBAはマクロの処理を動かすプログラム言語

では、Excelでマクロ機能を使うために、VBAというプログラム言語を使えるように準備をしていきます

  1. まずExcelを立ち上げます
  2. 「開発タブ」を追加するために、
    1. 「ファイル」をクリック
      ファイル
    2. 「オプション」をクリック
      オプション
    3. 「リボンのユーザー設定」をクリック
    4. 「開発」をクリック
      開発
    5. すると、「開発」タブが表示されます
  3. 「開発」をクリック
    開発タブ
  4. 「Visual Basic」をクリック
  5. 「挿入」ー「標準モジュール」をクリック
    標準モジュール
  6. Module1が表示されます
    モジュール1
  7. これで準備完了です
  8. 上書き保存をクリック(もしくは、Ctrlを押しながら、Sを押す)、保存しておきましょう
    上書き保存
  9. ファイル名を入力
  10. ファイルの種類を「Excelマクロ有効ブック(*.xlsm)」に変えます
    xlsm
  11. 「保存」をクリック

scratchのはじめ方

 ensyu-c, lecture, PcTips, software  scratchのはじめ方 はコメントを受け付けていません。
10月 052018
 

Scratchを使って、プログラミングをはじめます。

ここでは、ヒント(チュートリアル)を見て、
実際にドラッグしていきながら、
どのように動かすのかを理解していきます。

では、はじめましょう。

まず、Scratchで作る をクリック。
(公式サイトからつくるをクリック。)

  1. ヒントが右に表示されているか、確認します。
  2. すると右側にチュートリアルのテーマが表示されます。
  3. 表示されていなければ、ヒントをクリック。
    もしくは右側のクエッションマークをクリック。
  4. 13個あるテーマを順に進めます。
  5. 指示に従って、プログラムを作成していきますが、
    ブロックをドラッグしていくだけですので、
    直感的に進めていけます。
  6. では、まず最初から。
    Scratchをはじめようをクリック。
  7. 始める、もしくは動かしはじめるをクリック。
    どちらでもかまいません。
  8. 〜歩動かすをドラッグとありますので、
    左側のスクリプトから、10歩動かすを探します。
  9. 今見ているヒントの左横がスクリプトエリアと呼ばれています。
    ここに、10歩動かす と書いてある青いブロックをドラッグします。
  10. つぎに音を追加します。
    スクリプトのメニューから音をクリック。
    〜のドラムを〜泊鳴らす を探します。
  11. 探せたら、スクリプトエリアにドラッグ。
    10歩動かすの下にくっつけます。
  12. このように順番にブロックをつなげていけば、
    コード(プログラム)完成です。
  13. 手元のコンピュータにダウンロードをクリック。
  14. デスクトップに保存します。
  15. 次のテーマに移ります。
  16. テーマ終了ののち、ダウンロードしたファイルを(複数のテーマを終了したときは圧縮してから)、課題提出。

 

スピードアップアイテムを追加する-HSP

 ensyu-c  スピードアップアイテムを追加する-HSP はコメントを受け付けていません。
7月 232017
 

課題のスピードアップアイテム追加のプログラムを作成する際の手順

data にある chgstage.hspに、アイテム power.bmp を使用して、
自機から打ち出される弾の数を追加したものが、
powerup.hsp です。

speed.bmpを使用して、
自機から打ち出される弾のスピードを速くするためには、
powerup.hsp を参考にして(コピーして)、
修正していきます。

そこで、まずどこが違っているのかを見つけます。

Power up アイテムを追加した場合の変更点

2行目

2行目のd3m.hspは、23行目のd3timer()が書かれているファイルです。
これを include で呼び出して、使っていきます。

8,9行目で6番のbufferに、power.bmp を読み込んでいます。

43行目左

自機弾の数の初期値と最大値の設定 39-41行目が45-50行目に変更

43行目右

110行目

最初のif で、pwfが1(画面上にpowerupアイテムが表示されている)かどうかを判断しています。

2つ目のif で、画面の下まで達したら、pwfを0(ゼロ:画面上にpowerupアイテムが出ていない)にします。
pwy : powerupアイテムの表示されている位置(y座標)
wys : ウィンドウの縦のサイズ

つぎのif では、百回のループのうち1回アイテムを表示するようにしています。

4つの目のif で、時間をはかり10,000 msに達したら、弾の数(tmx)をもとに戻します。

最後のif では、画面に表示中であれば、
ゲットできたかを判断するサブルーチン(getchk_p)に飛びます。

228行目

自機が表示中のとき、自機とpowerupアイテムがぶつかったかどうかを判断し、
ぶつかった場合にゲットしたとして、弾の数を増やしています。
234行目では、始まりの時間を設定しています。

ぶつかっていなければ、そのままgcopy 6〜で、6番のbufferからアイテムの画像をコピー、表示します

speed up アイテムを追加する場合

  1. powerup.hspを読み込みます、(ファイルから開く、あるいは黒い画面にドラッグ。)
  2. 名前をつけて保存、speedup.hspのように名前をつけます。
  3. 8, 9行の2行をコピー、新しくbufferをつくり(7番とでもしましょう)、
    speed.bmp を読みます
  4. 45行目-47行目tmxinitなどの変数を参考に、スピードアップのための
    変数を設定します。(例えば、tsp、tspinit、tspmaxのような名前で設定)
  5. 110行目にあるように、spx、spy、spfのような名前の変数を使って、
    112-129行目をコピー、そのまま下に貼り付けし、
    speedupアイテム用のスクリプトを作成します。
    getchk_pをgetchk_spなどにしましょう。
  6. 230-239行目のスクリプトをコピーし、そのまま後ろに貼り付けます。
  7. *getchk_sp に変更し、pwの付いた幾つかの変数を、tspなどに変えます。
  8. 最後のgcopyの6番を7番などspeedupアイテムを読み込んだ番号に変更します。
  9. 自機弾をすすめているところを探します。
  10. -=16の数字を変数に変更し、完成です。

ゲームの作成8

 ensyu-c, lecture  ゲームの作成8 はコメントを受け付けていません。
5月 292017
 

敵キャラの種類を増やす <stage 15>

  1. 敵キャラBを複製します。
  2. ボスキャラboss.png を読み込みます。
  3. 名前をボスキャラに変更します。
  4. 敵キャラの弾丸を複製します。
  5. ebullet.png を読み込みます。
  6. 名前をボスキャラの弾丸に変更します。
  7. ボスキャラのスクリプトを以下のように変更します。

  8. ボスキャラの弾丸に移ります。
  9. 以下のように変更します。
  10. 完成です。

詳しくは、以下の書籍をどうぞ。
とてもわかりやすく書かれているため、
楽しんでプログラムできます。

ゲームの作成7

 ensyu-c, lecture  ゲームの作成7 はコメントを受け付けていません。
5月 222017
 

13のステージは、三角関数(sin, cos)のしくみを使い、
敵がカーブを描いて、進むようにします。

stage13の三角関数の方は、参考に動きを確認し、
次に進みます。

敵キャラの動きを複雑に <stage 13>

  1. 敵キャラのスクリプトに移ります
    ・y座標を-2ずつ変える、のブロックの上に、
    x座標をsinで計算したものを追加します。
    ・◯✕◯を使い、左側に2を右側にsinを入れます。

    ・爆発したとき、動き回らないよう逆の動きを加えます。
  2. 上の敵キャラを複製し、2体にします。
  3. 2体を残し、他の敵キャラを削除します。
  4. このとき敵キャラは、sinを使ってx座標を求めているので、
    いつも出てきた直後、右向きに移動します。
  5. あと2体作成したいのですが、sinをcosに変えてみます。
    こうすることで、左向きに移動します。
  6. まず、sinを用いた1つを複製します。
  7. cosなど合計4箇所を変更します。
  8. cosの敵キャラを複製し、2体にして完成です。

敵キャラの種類を増やす <stage 14>

  1. 敵キャラのスプライトを複製します。
  2. コスチュームに移ります。
  3. enemy2.png を開きます。
  4. enemyを削除します。
  5. 敵が5体になりました。
  6. 敵キャラ5を敵キャラBに変更します。
  7. ほかの4体も敵キャラA、A2、A3と変更します。
  8. スクリプトに移り、4箇所、変更します。
    ・回転せず、真っ直ぐ進む
    ・x座標の乱数を変更
    ・定義の中をenemy2に変更
    ・90度に向ける、を追加

    ・敵キャラを倒した時、スコアを200加点します。
  9. 敵から弾丸が発射されるようにします。
  10. 弾丸を右クリック、複製をクリック。
  11. ebullet.png を開きます。
    元の弾丸は削除しておきます。
  12. 下図のようにスクリプトを修正。
  13. 敵キャラBに移り、下記スクリプトを追加します。
    ・プレイ中かどうか
    ・◯かつ◯を使い、
    左の◯:敵キャラが通常のコスチュームか(爆発中でないか)
    右の◯:自機との距離が近いか
    をはめ込みます。
  14. stage14終了

詳しくは、以下の書籍をどうぞ。
とてもわかりやすく書かれているため、
楽しんでプログラムできます。

ゲームの作成6

 ensyu-c, lecture  ゲームの作成6 はコメントを受け付けていません。
5月 222017
 

スタートとゲームオーバーの画面追加 <stage11>

  1. ステージをクリック。
  2. 背景をクリック。
  3. 2つの画面を追加。
  4. 以下のように配置を変え、名前を変更します。
  5. スクリプトに切り替え、以下のようにブロックを追加。
    ・はじめは背景をスタートにします。
    ・スペースキーが押された時、背景をプレイ中にします。
    ・残機数が0を受取り、背景がプレイ中なら、ゲームオーバーに変更。
  6. ゲーム開始後、効果音を鳴らします
    ・背景がプレイ中なら、終わるまでBGMを鳴らします。
    ・ゲームオーバーかリセットを受け取ったら、すべての音を止めます。
  7. 自機のスクリプトに移ります。
    以下の6項目を修正します。
    ・リセットを受け取った時、スコアを0、残りを3にする
    ・リセットを受け取った時、隠すを追加

    ・ゲーム開始を受け取った時、自機を真ん中に移動する、に変更
    ・ゲーム開始を受け取った時、自機を左右に移動する

    ・残り=0なら隠す代わりに、メッセージを送信
    ・ゲームオーバーを受け取った時、隠すを追加
  8. 弾丸のスクリプトに移ります。
    ・リセットやゲームオーバーを受け取った時、隠す
    ・プレイ中のみ、弾丸を発射する。
    もし、を追加、調べる、から以下のブロックを選び、修正。

  9. 敵キャラのスクリプトに移ります。
    ・緑の旗がクリックされたら、をゲーム開始を受け取ったとき、に変更

    ・プレイ中のみ、移動する
    ・リセットやゲームオーバーを受け取った時、隠す
  10. 敵キャラのスクリプト全体

ハイスコアの記録 <stage 12>

  1. 自機のスクリプトを変更
    ・データー変数を作る、からハイスコアを作成。
    ・ハイスコアをスタート画面だけに表示します。(ゲーム開始で隠す)
    ・リセットやゲームオーバーを受け取った時、表示。
    ・ゲーム開始を受け取った時、自機を真ん中に表示。
    ・ゲームオーバーを受け取ったとき、自機を隠し、
    スコアがハイスコアを上回ったなら、スコアを新しくハイスコアとする。

詳しくは、以下の書籍をどうぞ。
とてもわかりやすく書かれているため、
楽しんでプログラムできます。

ゲームの作成5

 ensyu-c, lecture, PcTips, software  ゲームの作成5 はコメントを受け付けていません。
5月 212017
 

ゲームのスコアと自機の残機数の記録 <stage 10>

  1. 自機をクリック。
  2. データをクリック。
  3. スコアと入力。
  4. OKをクリック。

    ・スコア関連のブロックが表示されます。
  5. 下図のように旗がクリックされたら、スコアを0にします。
  6. 次に敵キャラをクリック。
  7. 最後のスクリプトに、
    スコアを100ずつ変えるを加えます。
  8. この設定により、敵キャラを一機撃墜すると、
    スコアが100増えます。
  9. 次に自機は3回、敵と衝突すると消えるようにします。
  10. 自機をクリック。
  11. データ変数を作るとクリック。
  12. 残りと入力。
  13. このスプライトのみをチェック。
  14. OKをクリック。
  15. スコアと残りが並んで表示されます。
  16. スタート時の残機数を3機にするため、
    初期化のスクリプトに、ブロック「残りを3にする」を追加。
  17. 自機と敵キャラが衝突した、を受け取ったとき、
    隠す、を、残りを−1ずつ変える に変更。
  18. 敵キャラに移動。
  19. 自機と敵キャラが衝突した を送るとき、隠します。
  20. 自機に移動。
  21. 衝突したとき、残りが0なら隠し、
    そうでなければ、0.2秒明るくして衝突を表現します。
    緑の部分は、演算のブロックを使います。
  22. 自機のその他の部分
  23. 敵キャラの残りの部分

詳しくは、以下の書籍をどうぞ。
とてもわかりやすく書かれているため、
楽しんでプログラムできます。

ゲームの作成4

 ensyu-c, lecture, PcTips, software  ゲームの作成4 はコメントを受け付けていません。
5月 212017
 

ブロックの作成<stage 9>

  • 敵キャラをクリック。
  • 敵キャラのスクリプトの以下の4行をブロックを使い、簡略化します。

    ・その他−ブロックを作る とクリック。
    ・オプションをクリック。

    ・テキストをクリック。
    ・初期化する と入力。
    ・OKをクリック。
  • 「初期化する」のブロックが出現します。
  • 同時に、右側のスクリプトエリアに定義「初期化する」のブロックが表示されます。
  • 4行を下に繋げます。
  • 次にx座標を変えられるように、変更します。
  • 定義「初期化する」を右クリック。
  • 編集をクリック。
  • 「数値の引数を追加」をクリック。
  • number1の代わりに初期x座標と入力。
  • OKをクリック。
  • x座標を〜 の乱数の部分をドラッグし、外に出します。
  • 初期x座標を空いた部分にドラッグ。
  • 乱数の部分を右クリック。
  • 複製をクリック、2つにします。
  • 「初期化する」の1の部分に複製した乱数のブロックをドラッグ。
  • 定義の部分をもう少しわかりやすいように修正します。
    定義「初期化する」を「x座標を」に変更し、
    後ろのテキストに、「で初期化する」を入力。

    図 定義部分の完成

詳しくは、以下の書籍をどうぞ。
とてもわかりやすく書かれているため、
楽しんでプログラムできます。