自立学習×個別指導

NextStage

学習塾 ネクストステージ

埼玉県川越市大字砂935-6

新河岸駅下車徒歩2分

電話 049-265-8994

FAX 049-265-8640

2015/12/11

【EXCEL_VBA】最短講座⑥ データや数式の入力

EXCELの自動化を実現するVBAマクロを、「とりあえず使ってみたい」という人のために、最短で説明する講座です。(Excel2010で説明します。)
前回はセルのデータを自動選択することを学習しました。
 
今回は、「データや数式の入力」を学んでみましょう。
①インプットボックスを使ったセルへの入力


マクロを使ってやりたいことNo.1といっても良いのではないでしょうか。
しかし、InputBox関数の使い方は引数(設定できること)が多いために、わかりづらいところもあります。
今回は、入力だけの設定でできる便利な使い方をみていきましょう。
 
1.ただ入力するだけ
—————————-
Sub 入力()
Dim mydate
mydate = InputBox(“入力してください。”)
Range(“A1”) = mydate
End Sub
—————————-
【説明】mydateという変数を用意して、インプットボックスに入力されたデータを格納⇒A1セルにそのデータを入力する。
 
2.キャンセルのときの設定を追加する。
—————————-
Sub 入力()
Dim mydate
mydate = InputBox(“入力してください。”)
 
If mydate = “” Then
MsgBox (“入力を取り消します。”)
Else
Range(“A1”) = mydate
End If
End Sub
—————————-
【説明】インプットボックスでキャンセルボタンを押されたときは、何も入力されていないのと同じ状態になりますので、mydate=””で判断します。今回はif関数を使い分岐しました。(インプットボックスにキャンセルボタンを押した!という判断はありません。)
 
3.次々に入力する。
—————————–
Sub 入力()
Dim i
i = Application.WorksheetFunction.CountA(Range(“A:A”))
i = i + 1
 
Dim mydate
mydate = InputBox(“入力してください。”)
 
Do While mydate <> “”
Cells(i, 1) = mydate
i = i + 1
mydate = InputBox(“入力してください。”)
Loop
 
End Sub
—————————–
【説明】A列につぎつぎにデータを入力する設定です。i = Application.WorksheetFunction.CountA(Range(“A:A”))ですでに入力されている個数をしらべてその続きから入力します。今回はキャンセルボタンを押すか、何も入力せずにOKボタンを押すと止まるようにループさせました。
 
ということで、インプットボックスは最低限の設定だけでも便利です。その他にも、タイトルをつけたり、表示する位置を指定したり、といろいろな機能が備わっています。1つずつ項目を付け足して試してみるとおもしろいですよ。
 
 
 

②セルに数式を入力する。


なるべく自動的に集計できるようにするために、セルに数式をマクロで入力したい、ということがあります。
どうやって入力すれば良いのか、悩むことがあると思いますが・・・数式の扱いは簡単です。

 

たとえば、Range(“A1”) = “=sum(B:B)” のように、文字列と同じように数式を入力してあげればよいのです。今回は=sum(B:B)という数式を入れましたので、B列のすべての和が求まります。
(これは、=から始まる文字列は数式だ!というExcelの自動認識を利用しています。)

 

しかし、数式の入力で気をつけなければならないことが1つあります。
数式自体に文字列を入力するときです。

 

たとえば、=COUNTIF(B:B,”川越”) という数式を入力するときに、
Range(“A1”) = “=COUNTIF(B:B,”川越”)” とするとエラーになります。

 

プログラムの受け取り手のコンピューターが、【“=COUNTIF(B:B,”】という文字列と【川越】という得たいの知れないものと【”)”】という文字列と認識するためです。

 

数式の中の文字列は”川越”ではなく、””川越””にします。”を2つ使って挟むことで上手く認識させるのです。
Range(“A1”) = “=COUNTIF(B:B,””川越””)” が正解です。入力されたあとの数式は =COUNTIF(B:B,”川越”) になります。

 

今回はデータの入力で困りやすいインプットボックスと数式を扱いました。

 
 
次回は、自作のフォームを利用した入力について、学んでいきます。
 
 

┿━━━━━━━━━━━━━━┿
— 学習塾NextStage ( ネクストステージ )–
┿━━━━━━━━━━━━━━┿
■営業時間 平日13:00~21:30
土曜10:00~21:30
日曜 不定期
■住所:川越市大字砂935-6
■電話:049-265-8994            
2016/01/05

合格_待ち受け 縦・大

最後まで努力しろ!

tate_960×1280

 

 

学習塾NextStage ( ネクストステージ )
■営業時間
平日13:00~21:30
土曜10:00~21:30
日曜 不定期
■住所
埼玉県川越市大字砂935-6
■電話
049-265-8994            
2015/10/27

【家庭学習ツール】図形描画用EXCELベータ版

689e15_10b84fff68a84a87995bedcdcd1680c9

 

算数や数学の問題をつくるときに、Wordのオートシェイプにイラついたことはありませんか。​

 

 

 

⇒ぴったりあわせたつもりなのに、印刷したときに少しずれている・・・。
⇒角度の設定が面倒・・・。
⇒長さをあらわす ⌒ みたいな図形がきれいに入れられない・・・。

 

オートシェイプも見た目がきれいな図形をパッとつくるにはとても良いのですが、数学的な図形には設定が大変です。

 

また、私の学習塾では、個々にプリント教材を作成することも多く、図形の作成に時間をとられていました。

 

これらの悩みを解決するためにEXCELの図形描画ソフトを作成しました。

 

AR_CADなどのすばらしい無料描画ソフトもあるわけですが、今回はオートシェイプとの互換性を残すことを目的にEXCELで作成しました。

 

ですので、オートシェイプが扱えれば、すぐに扱えるようにしています。

 

職場でMsOfficeしか使えない某大手塾の職員にもおすすめです。

 

まだ試作版ですが、一度公開してみます。VBAのコードだけは恥ずかしいのでパスをかけます。

 

基本的な操作方法は、
①メニューバーから作図したい図形を選ぶ。
②画面の左の方の、設定値をいじくる。
③描画ボタンを押す。
で終了です。

 

エラー処理やら使い方の説明やらまだまだ未完成ですが、どんなソフトかは体験できると思います。

 

使ってみて、こうしたら良いのでは? こういう機能がほしい! などありましたら、ぜひコメントください。

 

ダウンロードはこちらから。

2015/09/28

【EXCEL_VBA】最短講座⑤ セルのデータを自在に選択

EXCELの自動化を実現するVBAマクロを、「とりあえず使ってみたい」という人のために、最短で説明する講座です。(Excel2010で説明します。)

 

前回はif文とselect caseで条件分岐を行いました。

 

今回は、「セルのデータを自在に選択する」ことを学んでみましょう。

 

まずは、事前の準備として、データを用意しておきます。
下記のマクロを実行してください。
——————————————————————————-
Sub ランダムデータ入力()
Dim i, j, k, l
Sheets(1).Select
Cells(1, 1) = “実施日”
Cells(1, 2) = “担当者”
Cells(1, 3) = “評価”
For i = 2 To 26
‘A列への入力
Cells(i, 1) = Application.RoundUp(Rnd * 12, 0) & “月” & Application.RoundUp(Rnd * 30, 0) & “日”
‘B列への入力
j = Application.RoundUp(Rnd * 5, 0)
Select Case j
Case 0
Cells(i, 2) = “なかむら”
Case 1
Cells(i, 2) = “さかい”
Case 2
Cells(i, 2) = “きむら”
Case 3
Cells(i, 2) = “もりした”
Case 4
Cells(i, 2) = “なかじま”
Case Else
Cells(i, 2) = “その他”
End Select
‘C列への入力
Cells(i, 3) = Application.RoundUp(Rnd * 10, 0) * 10
Next
End Sub
——————————————————————————-
【説明】コードは今まで学習したのを中心に使いました。Application.RoundUp(Rnd * ●, 0) のコードは、1~●までのランダムな整数をつくります。sheets(1).select はシート番号1のシートを選ぶことをあらわしていますが、重要ではありません。

 

①データの全範囲を選ぶ
今回のデータは3列、26行にデータが入っていますが、実際にExcelを使用していくとデータの個数が、どんどん変化していきます。データの数が変わっても、すべてのデータを選択する方法です。

 

新しくマクロを書きます。標準モジュールは新しいのを挿入しても良いですし、今までのコードに続きを書いても大丈夫です。
————————————
Sub 全選択1()
Range(Cells(1, 1) ,ActiveCell.SpecialCells( xlLastCell ) ).Select
End Sub
————————————
【説明】EXCELのVBAには、データがどこまで入っているか、自動で調べてくれる関数が備わっています。ActiveCell.SpecialCells( xlLastCell )はシート内のデータが入っている最も右下を選んでくれます。今回は、Cells(1, 1)を開始点として選択します。データの開始位置は必要に応じて変えてください。
しかし、これだと右や下の方の外れたところに、関数やデータがあるとそこまで選択してしまいます。

 

ひとつのかたまりとして選択したいときは次のようにします。
————————————
Sub 全選択2()
Cells(1, 1).CurrentRegion.Select
End Sub
————————————
【説明】これだと、外れたところにあるデータは無視できます。そのかわり、行や列が1行でも空いていると、そこまでをかたまりと見なすので注意が必要です。

 

空白の行や列の扱いをどうするかで使い分けましょう。

 

②データの最も下のセルを選ぶ
2つの方法が考えられます。
————————————
Sub 最下端選択1()
Cells(1, 1).End(xlDown).Select
End Sub
————————————
【説明】Cells(1, 1)を起点として、一番下のセルを選びます。普通ですね。
しかし、これだとデータに空白があるとそこで止まってしまいます。
そこで一般的には、次のようにすることが多いです。

 

————————————
Sub 最下端選択2()
Cells(Rows.Count, 1).End(xlUp).Select
End Sub
————————————
【説明】Rows.Countは、シートの最終行まで何行あるか調べています。つまり、1列目の最も下のセルを選んでから、データが入っている最終行まで戻っていくイメージです。こうすると途中に空白セルがあっても問題ありません。

 

③データの最も右のセルを選ぶ
————————————
Sub 最右端選択()
Cells(1,Column.Count).End(xlToLeft).Select
End Sub
————————————
【説明】最下端選択2()を修正したものです。1行目の最も右のセルを選んでから、左に戻ります。

 

ちなみに、②と③を組み合わせると、最も右下のセルを選べます。
————————————
Sub 右下選択()
Cells(Rows.Count, 1).End(xlUp).Select
Cells(Selection.Row, Columns.Count).End(xlToLeft).Select
End Sub
————————————
【説明】Selectionは、.selectで選んだセルの情報をそのまま引き継げます。今回は、Selection.Rowとして、選択したセルの行番号を取得しています。場合によっては、ActiveCell.SpecialCells( xlLastCell )で選べない端点を選ぶのに使えます。

 

④データの最も下の次のセルを選ぶ
新しいデータを入力するときによく使います。次のセルを選ぶときは、Offset(●,■)を使います。これを使うと、下の方に●行、右の方に■列ずらすことができます。

 

最下端選択2()にOffsetを付け加えます。
————————————
Sub 新規セル選択()
Cells(Rows.Count, 1).End(xlUp).Select
Selection.Offset(1, 0).Select
End Sub
————————————
【説明】一番下のセルを選んでから、それをひとつ下にずらすということです。Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Selectでも同じ動きをしますが、あとで見返してもすぐわかるように、小分けして書いています。

 

⑤行や列を選択する。
今までは、Cellsでセルを選択していましたがRowsで行(上から何番目か)、Columnsで列(右から何番目か)を選択できます。いくつかの例を挙げておきます。

 

・Rows(4).Select ‘上から4番目の行を選択します。
・Columns(4).Select ‘右から4番目の列を選択します。
・Rows(Rows.Count).End(xlUp).Select ‘データの一番下の行を選択します。
・Rows(Rows.Count).End(xlUp).Select
Rows(Selection.Row + 1).Select ‘データの一番下の次の行を選択します。
※行や列操作の場合は、Offsetを使わず、最終行+1で指定すれば良いわけです。

 

今回はここまで。すでに学習した内容で、あれもこれもできてしまいますね。

 

次回はデータ(数値や関数)の入力について学習します。

2015/09/26

【EXCEL_VBA】最短講座④ 条件分岐のIF文

EXCELの自動化を実現するVBAマクロを、「とりあえず使ってみたい」という人のために、最短で説明する講座です。(Excel2010で説明します。)

 

前回はFor文で繰り返し操作を学習しました。
↓前回までのコード
————————————
Sub テスト()
Dim i As Long ‘iは数字
Dim j As String ‘ jは文字列
j = “月”  ‘jに月を代入

 

‘▼ iは1から12まで繰り返し
For i = 1 to 12
Cells(i,1)=i & j ’1列目のセルに入力
Next i
‘▲

 

End Sub
————————————
(このコードを引き続き使います。)
今回は、「条件によって操作を変える」ことを学んでみましょう。

 

①2つの分岐 IF とElse
【基本形】
If 条件 Then
(条件を満たす場合)
Else
(条件を満たさない場合)
End if

 

ということで、とりあえず書いてみましょう。
今回はiが8のときに”夏休み”と付け加えます。
————————————
Sub テスト()
Dim i As Long ‘iは数字
Dim j As String ‘ jは文字列
j = “月”  ‘jに月を代入

 

‘▼ iは1から12まで繰り返し
For i = 1 to 12

 

If i =8 Then
Cells(i,1)=i & j & “夏休み”
Else
Cells(i,1)=i & j
End If

 

Next i
‘▲

 

End Sub
————————————

 

②条件式の立て方
上記の場合はiが8になる完全一致でしたが、他にも以下のような指定の仕方があります。
さきほど書いたコードをいじって、違いを確認しましょう。

 

・i>8 (iが8より大きい)
・i=8(iが8以上)
・i<=8(iが8以下)
・i8(iが8と等しくない)

 

また、3より大きく8より小さい場合は、3 < i 3 And i<8
のようにAndで条件を付け加えます。

 

さらに、3より小さいか、もしくは、8より大きい とする場合には
・i8
のようにOrで条件を付け加えます。

 

※1月,2月,3月・・・というデータがあって、その数字の部分だけに条件を与えたい場合は、
Left関数で、左の文字を取り出すという作業が必要です。詳しくはいずれ説明しますが、
文字列操作で、Left関数、Middle関数、Rightを知っておくと便利です。

 

③細かい分岐は Select Case
【基本形】
Select Case i ‘(iの部分は変数であれば何でもOK)
Case (iの条件①)
(条件①を満たす場合)
Case(iの条件②)


Case Else
(条件をどれも満たさない場合)
End Select

 

今回は4月に”新学期”,7月と8月に”夏休み”,9月~12月に”2学期”と付け加えます。
※if文とは条件の書き方が違うことに注意します。
————————————
Sub テスト()
Dim i As Long ‘iは数字
Dim j As String ‘ jは文字列
j = “月”  ‘jに月を代入

 

‘▼ iは1から12まで繰り返し
For i = 1 to 12

 

Select Case i
Case 4
Cells(i,1)=i & j & “新学期”
Case 7 , 8
Cells(i,1)=i & j & “夏休み”
Case 9 to 12
Cells(i,1)=i & j & “2学期”
Case Else
Cells(i,1)=i & j
End Select

Next i
‘▲

 

End Sub
————————————
(説明)Select Caseの方が、条件を短く書けるわけです。If文と書き方が異なるため、2つも覚えられないよ!人はSelect Case文に慣れてください。

 

前回のFor文と今回の条件分岐を組み合わせるといろんなことができます。いろいろ試してください。

 

今回はここまで。

 

次回はセルのデータを自在に選択する方法について学習します。

学ぶのが楽しくなり積極的に勉強する子が育つ学習塾のお役立ちブログです

新河岸にあるNextStageは、勉強させる、教えるという方針ではなく、生徒一人一人が自らの意思で積極的に学ぶことができる環境を整えております。自分の弱点や苦手分野を把握して生徒をサポートするパソコンとともに、理解できる楽しさを噛みしめながら前へと進んでいき、成績アップへとつなげていけます。
自ら学ぶ力がつく学習塾NextStageのブログでは、ご自宅からも簡単にアクセスして学べる家庭学習支援ツールの配信や、中学受験や高校受験などに役立つ情報やアドバイスを掲載しております。
塾だけでは物足りず、もっと勉強したいときや、受験勉強でつまずいたとき、不安になってしまったときに、新河岸のNextStageのブログをご覧ください。

→TOPに戻る