ExcelマクロVBA
前回で多次元配列のお話です。使い方もありますが、ほとんど前回の配列の配列と同じです。 違うのは書き方ですね。こんな感じで書きます。 Sub test() Dim strArray(2,2) As String strArray(0, 0) = Sheet1.Range("A1").Value End Sub 以上。非常にわかり…
今日はもう少し配列について突っ込んでいきたいと思います。今日配列の配列です。 ( ゚д゚)アァ・・・もう無理・・・ 大丈夫です。とりあえず、一番簡単な2つ構造だけ押さえればVBAの世界ではとりあえずやっていけると思います。なぜなら。。。 配列に配列を入…
実践で固定配列なんてあんの? というくらい、配列については固定で宣言するよりも、動的に扱うことの方が多いです。データなんて常に必ず10件なんてことほとんどないでしょう。100件だったり、123件だったり1000件だったり・・・それらを扱うためには固定配…
マンションに入ってみないか? 今日から配列でございます。初心者の皆さんが変数を学ぶ上での最初の関門ですなぁ・・・変数というのは以前にもその性質をお話しましたが、基本的には1つの値しか入れることはできません。strAisatu変数に「おはよう」が入って…
オラだんだん口調とか砕いて書きたくなってきたぞ。昨日、声優のレジェンド野沢雅子さんがテレビに出てて、なんかスゲーもん見ました。まぁ、そんな感じです。(どんなだ?)本題行きます。 変数の名前付けルール プログラミング言語で変数という概念は必須…
オブジェクト(ロボ)はセットしないと使えない! 通常のString型やLong型の変数というのは値を格納するには代入式(=)を使えばいいだけでした。 strHoge = "これは文字列です" lngHoge = 12345 ですね。しかし、ロボ。つまりオブジェクト型の変数に実際の…
前々回くらいで、初心者が躓くところで変数の型で躓いていると書きました。そして今回は変数の型についてです。今回は最初に宣言します。 覚える型は3つだけ!(実質2つ) これだけ。これだけ覚えて今回は終わりです。簡単だと思いますがかなり重要ですし、…
今回は閑話休題です。自分がやっているエクセルマクロ案件というか、まぁメインで作ってるんですが、分からなくて調べて、解決そして伝説へ・・・的なことです。初心者の方でも読み物くらいでお願いします。たまにはこんな風に書いてみたいんだよ。うん。 問…
グローバル変数とローカル変数 さて、変数が使える範囲のお話です。VBAっぽくいうと、グローバル変数とモジュールレベル変数なんて呼んだりしますが、ぶっちゃけ呼び名なんてどうでもいいです。グローバルとローカルで十分。なぜならその方がイメージしやす…
変数は作る。絶対に・・・ 今日は前回の変数は絶対に宣言してね。についてです。実は通常ですと変数は宣言しなくても使えます。 エクセルマクロの初期設定では変数は宣言しなくても使えるようになっていますが、マクロというかプログラミングをマスターした…
以前やった変数のお話ですが・・・さてどうしたもんかと思いましたが、先人の人がとてもわかりやすく教えてくれているのでそれに沿って少し話をしたいと思います。 マクロの記録で変数は出てこない まずプログラミング初心者の人がつまづくのはここです。最…
もう少しだけこの3行のプログラムを見てましょう。 Public Sub Test1() Range("A1").Value = "Hello! VBA!" End Sub わずか3行です。ですが、これだけでブログ3回も費やせるくらい深いってことですな。逆にこの3行が理解できないなら、この先は絶対に無理っ…
私のブログ文章長いらしいので短めにしてみます。今日は昨日の1つの命令文についての説明のお話ちょっと英語の文法チックになると思いますが、頑張ってください。 エクセルはプロシージャ単位で理解する。 昨日のコードをもう一度出します。Sheet1オブジェク…
プログラミングの基礎って? 記念すべきVBAカテゴリの50回目がプログラミング基礎の1回目とは。実に面白い。(古) 今までオブジェクトというものをロボに例えて来ましたので、もう少しロボのままでいてもらいます。(笑)今回からプログラミング基礎を学びま…
今日はちょっとだけコードを書きます。前回までにお話したオブジェクト。そうロボの設計図であるクラスを書いてみましょう。サンプルにするのは以前題材で取り上げた成績表マクロを使います。今回は成績ロボ(オブジェクト)を作成する設計図(クラス)を書…
ロボ(オブジェクト)同士の関係 前回やった続きです。またオブジェクトをロボに例えてお話しましょう。前回、エクセルはたくさんのロボ(オブジェクト)が集まってできている(集合体)ということをお話しました。だから、マクロでエクセルを動かすには数あ…
エクセルのマクロをマスターするにはプログラミング言語であるVBAとプログラミングの基礎を学びましょう。ということはずーっとこのブログで主張してきました。ただの動作を記録するような「マクロの記録」をするだけでは、一生マクロを覚えることは「不可能…
マクロは難しくない これからまた最初の最初のステップです。色々とエクセルを使って作業をしているとあぁ・・・マクロが使えたらなぁなんて思ったことないでしょうか?おそらく、マクロの記録を使ってみて、再現して、おぉ・・・これがマクロか・・・と思っ…
今回で完成まで持っていきたいと思います。前回までで、必要なデータ(氏名や成績など)はすべて変数に格納してあります。後はこれを出力用のテンプレートを開いて、出力して、保存して、終わりです。 出力の処理としては テンプレートファイルを開く 成績表…
こっからどんどん難しくなると思いますが、ついてこれない場合でもこんな感じなのかーと言うくらいに思ってくれてもいいです。要するにどう考えてどう作っているのか?ということを感覚的に理解してもらえると嬉しいです。 成績表を取り込む変数を作成する …
今回でエラーチェックを完成させます。さっそくですが、ファイルの存在チェックから。 Dir関数は存在チェックに便利! テンプレートファイルが存在するか?を調べるにはDir関数という関数を使います。この関数は引数で指定したファイルが存在する場合に、フ…
続きです。では後はIf文の中に日本語で書かれているところをちゃんとチェックできるようなものに変えていくだけです。いくつかチェックがありますが、順番にやっていきましょう。 入力されているかは""(空文字)で調べる 数字が入力されてない場合は、単純…
今回はエラーのチェックですね。何度でも載せておきますが処理の流れを設計の回で書いたのでおさらいです。 <処理の流れ> ボタン押下時のイベント処理 メイン処理(mdlMain) 事前の処理(mdlStartEnd.PreStart) エラーのチェック(mdlErrorCheck.InputCheck…
さて、今日からは設計から各種のメソッドを作っていきます。 1つ1つの役割を考えて、処理を書いて行きます。 まずは前々回でやった設計に登場した処理を再掲載します。 ボタン押下時のイベント処理 メイン処理(mdlMain) 事前の処理(mdlStartEnd.PreStart) …
ファイルのレイアウトを作成する 前回までに、基本的な設計というのは大体決めることができたと思います。さっそく成績表マクロの新しいレイアウトと、必要なモジュールの外枠をすべて作成していきます。ゴリゴリっとやっていくのでしっかりと付いて来てくだ…
さて、今回から新たに今までに作った成績表マクロを一度ぶっ壊してみます。完全に0にするわけではありません。必要な処理と仕様を洗い出し、どのような処理をすることが一番スマートなのか?を考えてみましょう。 マクロの仕様を考える前に前提を決める まず…
これについては非常にわかりにくいと思うので、この回でこのテーマだけを取り上げます。 値渡しってなぁに? 今までやったメソッドの引数にはこう書いてありました。 InputCheck(ByVal shussekiNumber As String) As Stringこのカッコの中にある「ByVal」と…
前回書いたユーザー定義型のコードについてもう少し詳しく説明します。 ' 科目のユーザー定義型 Public Type Kamoku Name As String '科目名 Score As Variant '点数 End Type と ' 科目の配列を作成します。 Dim arryKamoku() As Kamoku でしたね。 ユーザ…
さて、では答えです。前々回のMainのコードを見てみましょう。 Option Explicit Sub Main() '一般のエラーをキャッチする On Error GoTo cmnErr ' 必要な変数を作成する Dim shussekiNumber As String ' 出席番号を格納する変数 Dim name As String ' 氏名 D…
本題に入るその前に・・・ おわび 前回までの連載でコードに間違いがありました。出席番号をチェックするメソッドInputCheckの数字の範囲を確認する条件を間違ていました。 間違い:If CLng(shussekiNumber) 10 Then 正しい:If CLng(shussekiNumber) 10 The…