Excelで遊びたい

きっかけ

大学受験が終わり、暇になりまして何かしようと思ったとき、本棚に「たった1秒で仕事が片付くExcel自動化の教科書」という名前の本がありました。
PCを触る、とくにエクセルを触るのは苦ではないのでせっかくだから何か、VBAで作ってみようということになりましたのがきっかけです。

それからどうする?

とは言ったものの何をどうしたらいいのかわからず、本を読み、ググったりしたものの、エクセルでできないのは人との対話くらいではないかと思うほど、できることが多すぎます。
そう思ったとき、自分の趣味は読書なんだし、今後読書をする機会は増えるであろうと思い、記録用のマクロを組めばいいのではないかという安直な結論に至りました。

一筋縄ではいかぬ

さて始めよう!となりましたがいったい何から始めればいいのやら。
とりあえずは、書籍やサイトを読み漁り、必要な構文やら何やらを知るところから始めました。
使えるようになった構文を下に書いてみます。コードは水色で示します。
with ステートメント
with 〇〇という形で書き、〇〇にはend withで終わるまで、省略をしたいオブジェクト名を書くことができます。
例)with worksheets("sheet1")
.cells(1,1)=21
.cells(2,4)="目標"
end with
といった具合です。
withを使わないと.cellsの前にworksheets("sheet1")を書かないといけません。面倒だし、ミスも増えますね。ただ、withステートメントで省略できるのは1つまでです。

入力する行を調べる

データを複数入れていく際に必要なのが入力する行を調べることです。というのも、1行目に入力した後に2行目に入力しないと一行目に上書きをすることになってしまうからです。
そこで、書籍に書いてあったのがこのコードでした。以下に記します。
dim i as int '整数型を定義する
with sheets("sheet1")
i=.cells(rows.count,2).end(xlup).row+1
end with
ここに書いてあるコードは、+1までの部分で「入力されている行」を調べ「+1」をしているわけです。これをどう使うのかというと、
worksheets("sheet1").cells(i,1)= i
というコードがあるとします。
cellsの中身は「i行目のA列に i を代入しよう」というコードになっています。(cells関数ではA列を1と数字で表記します。B列は2です)
3行目までデータが入力されていればiは4ということになりますので「A4」に「4」が入るということになります。

いろいろ下準備

ある程度勝手がわかったので、ユーザーフォームを触ることにしました。

っと、その前に「開発タブ」を表示するところから。

「ファイル>オプション>リボンユーザーの設定>開発」という順番で開発タブが表示されると思います。

開発タブをクリックして「挿入」から「フォームコントロール>ボタン」でコマンドボタンを選択し「A1」のセルに合わせてドラックドロップをします。なにやら、画面が出てきたので、マクロを「入力」という名前にして新規作成をクリック。

ユーザーフォームは「frm記録」という名前にして「frm記録.show」をはじめのプロシージャ画面に入力します。

・・・っとまあ、長々と書いてもいいんですが、ここでは完成品を紹介。

スクショも載せつつ解説をしていきます。

 

↓の画像は全体図です。「入力開始」と書かれたボタンや、「保存する」という大きなボタンがありますね。
 
↓「入力開始」を押した状態です。「閉じる」ボタンを除けば3つの項目を作成しました。それぞれの項目についてのスクショを載せます。
なお、この画面を含めたボタンは、カーソルを合わせると赤くなるように設定をしてあります。それくらいのこーどは載せておこうかな。簡単な割に、結構使えるのでぜひ使ってみてくださいね。
 
↓「書籍情報の入力」を押した状態です。ここが基本的な画面になります。
 
↓「書籍情報の修正・追加」です。既に入力してある書籍に関する情報の追加や修正を行います。
「No.」で行を判断するので「必須」という風に初期設定でしてあります。カーソルを合わせると消えるようにしました。
 
↓「その他の設定」です。タブを使用して、使用者の基本情報と初期化を行えるようにしました。cellsの行と列を間違えて変なところが削除されたのは苦い思い出です。
 
↓「書籍検索」です。あいまい検索には対応はしていないものの、記録した書籍が増えるほど役に立ちます。何を読んだか、ジャンルは何か、すでに読み終わっているものかの3項目について調べることができます。
 
↓「ウィッシュリストを表示する」です。一番苦労しました。リストボックスを使用しましたからね。使い方やプロパティについてよくわからないまま使ってしまったので(汗
リストの登録、閲覧、削除、一括削除が行えます。もちろん、閉じれますよ。
 
↓「トリセツ」です。簡単ですが、各ボタンの説明と使い方について説明しています。
 

最後に

最後になりましたが、先ほど言っていたコードを載せて終わりにしたいと思います。
ここではユーザーフォームを「user」としてボタンを「button」とします。
 
userでの処理。(コードを開いた状態で、「click」を「Mouse Move」に変更してください)
Me.button.ForeColor = RGB(0, 0, 0)
 
buttonでの処理。(コードを開いた状態で、「click」を「Mouse Move」に変更してください)
Me.button.ForeColor = RGB(255 0, 0)
 
ちょっと解説しておくとRGBは、色を示しています。R=RED、G=GREEN、B=BLUEということですね。数値が高いと濃くなっていきます。
Rが255で他が0だとむろん赤になります。全部0だと黒ですし、全部255だと白です。
ForeColorで文字の色をRGBで指定した色にするよ~ということを示しています。FやCは正しい使い方やスペルだとかってに大文字になります。
ちなみにmeはuserに書き換えても構いません。
 
以上です。それでは楽しいVBAライフを!!