MS-ExcelVBA 基礎 (Visual Basic for Application)

Similar documents
sinfI2005_VBA.doc

ExcelVBA

Microsoft Word - VBA基礎(3).docx

ii Excel Excel IF IF IF VLOOKUP HLOOKUP IF VLOOKUP HLOOKUP ExcelVBA Excel Excel Excel Web p Excel Excel Excel

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

PowerPoint プレゼンテーション

情報基礎A

Java講座

Microsoft Word _VBAProg1.docx

PowerPoint プレゼンテーション

方程式の解法

プログラミング演習

情報処理実習(工基3)

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(VBA) サンプル問題 知識科目 第 1 問 ( 知

Microsoft Word - VBA基礎(2).docx

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

PowerPoint プレゼンテーション

Section1_入力用テンプレートの作成


プレポスト【問題】

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Microsoft Word - VBA基礎(6).docx

Microsoft PowerPoint - Visualプログラミング

Excel Excel Excel = Excel ( ) 1

上の図がプロジェクトエクスプローラです 通常 VisualBasicEditor 画面の左上に配置されています Microsoft Excel Objects( ワークシート ) フォーム 標準モジュール クラスモジュールなどに分かれていて それらの集まりをプロジェクトといいます Excel のワー

教科書原稿

PowerPoint プレゼンテーション

情報資源組織演習B:

[Excelが自動化するVBAの魔法2]購入者限定テキスト

演習1

Prog1_2nd

Microsoft PowerPoint - vp演習課題

PowerPoint プレゼンテーション

回文作成支援プログラム

プログラミング実習I

PowerPoint プレゼンテーション

物質工学科 田中晋

「不動産リスト」を解く

B 5 (2) VBA R / B 5 ( ) / 34

PowerPoint プレゼンテーション

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft PowerPoint - Prog05.ppt

エクセルによる数値計算と化学への応用

回文作成支援プログラム

プログラミング入門1

< 目次 > 1. 練習ファイルのダウンロード 表計算ソフト Excel の基本 Excel でできること Excel の画面 セル 行 列の選択 セルにデータを入力する ( 半角英数字の場合 )

Microsoft PowerPoint - slide

PowerPoint プレゼンテーション

System.out.println("char : " + (int)character.min_value + "~" + (int)character.max_value); System.out.println("float : " + Float.MIN_VALUE + "~" + Flo

1. 入力画面

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

EXCEL VBA講座

2 X Y Y X θ 1,θ 2,... Y = f (X,θ 1,θ 2,...) θ k III 8 ( ) 1 / 39

Excel Excel Excel = Excel III 7 ( ) 1

Microsoft Word - no103.docx

エクセルの基礎を学びながら、金額を入力すると自動的に計算され、1年分の集計も表示される「おこづかい帳」を作りしょう

PowerPoint Presentation

PowerPoint プレゼンテーション

Microsoft PowerPoint - lec4.ppt

ExcelVBA 実技 問題集

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

ガイダンス

Microsoft Word - 3new.doc

連立方程式の解法

ファイル操作

JavaScriptで プログラミング

講習No.8

ワープロソフトウェア

コンピュータリテラシ

Microsoft PowerPoint - while.ppt

スライド 1

PowerPoint プレゼンテーション

最初に VBA が使用できるように マクロ と呼ばれるエクセル上のアプリ ( のようなもの ) を準備します Excel メニューの ファイル オプション を選択 表示される Excel のオプション から リボンのユーザー設定 を選択 メインタブ 内の 開発 にチェックを付けて OK をクリック

プログラミング演習

Prog1_3rd

情報処理演習 B8クラス

プログラミング基礎


ようこそゲストさんトップ最新の日記ユーザー登録ログインヘルプ CX's VBScript Diary <Visual Studio は VBScript 用の最強エデ VBScript 基礎文法最速マスター 11:50 VBScript の文法一覧です 他の言語をある程度

万年暦プログラム

Microsoft Word - no02.doc

Microsoft Word - java a.doc

Javaによるアルゴリズムとデータ構造

Access研修テキスト

Microsoft Word - テキスト2008基本編.doc

memo

関数とは 関数とは 結果を得るために 処理を行う仕組み です Excel2010 には あらかじめ関数が数式として組み込まれています たとえば SUM 関数 は 指定した値をすべて合計する 仕組みです 長い計算式や複雑な計算式を作成せずに 簡単に結果を求めることができます 例合計 =A1+A2+A3

スライド 1

情報処理 Ⅰ 前期 2 単位 1 年 コンピューター リテラシー 担当教員 飯田千代 ( いいだちよ ) 齋藤真弓 ( さいとうまゆみ ) 宮田雅智 ( みやたまさのり ) 授業の到達目標及びテーマ コンピューターは通信技術の進歩によって 私達の生活に大きな影響を与えている 本講座は 講義とパーソナ

D0050.PDF

コンピュータ概論

よくわかる Microsoft Excel 2019/2016/2013 マクロ/VBA(FPT1910)

VBM01#解答解説# indd

プログラミングA

Microsoft Word - DF-Salford解説09.doc

JavaプログラミングⅠ

Microsoft PowerPoint - kougi6.ppt

Transcription:

MS-ExcelVBA 基礎 (Visual Basic for Application). 主な仕様一覧 () データ型 ( 主なもの ) 型型名型宣言文字長さ内容整数型 Integer % バイト -, ~, 長整数型 Long & バイト -,,, ~,,, 単精度浮動小数点数型倍精度浮動小数点数型 Single! バイト負値 : -.0E ~ -.0E- 正値 :.0E- ~.0E Double # バイト負値 : -.E0 ~ -.0E- 正値 :.0E- ~.E0 文字列型 String $ 可変長の場合, 約 GB( ) バイト オブジェクト型 Object バイトオブジェクトを参照するためのアドレス バイト型 Byte バイト 0~ の正の数値 ブール型 Boolean バイト True( 真 ) または False( 偽 ) () プロシジャの構成 Sub プロシジャ名 () 変数の型宣言... 処理... () 注釈 ( コメント ) ' シングルクォーテーション (') のあとは注釈とみなされる () 型宣言 Dim 変数名 As 型名 () 名前付け規則 - 名前の先頭は文字でなければならない - 名前にはスペース, ピリオド (.), カンマ (,), 感嘆符 (!), ハイフン (-), アットマーク (@), アンパサント (&), ドル記号 ($), ナンバ記号 (#) などの特殊文字を使うことはできない ただし, アンダースコア (_) を使用することができる - 変数名には, データ型を示す型宣言文字 (%,&,!,#,$) が使用できる - 名前は 文字 ( 半角の場合 ) 以内でなければならない - 通常,Visual Basic の関数, ステートメント, およびメソッドと同じ名前を使うことはできない () 演算子 & 文字列の連結 * 乗算 + 加算 - 減算 / 除算 \ 商 ^ べき乗 Mod 剰余

() If...Then () If 条件式 Then 処理 () 論理演算子 And 論理積 Or 論理和 > >= < <= <> = () 比較演算子 (0) If...Then () If 条件式 Then 処理 処理 () If...Then () If 条件式 Then 処理 If 条件式 処理 If 条件式 処理 処理 () Do While...Loop Do While 条件式処理 Loop Do...Loop から抜け出すときは, Exit Do を用いる () For...Next For 変数 = 初期値 To 終値 Step 増分値処理 Next 変数 (For に対応する変数 ) For...Next から抜け出すときは, Exit For を用いる

() 文字列定数 Dim str As String str = "string" () 次行への継続 ( アンダースコア ) 文 _ 文 () 配列宣言 Dim ix(,) As Integer () セル参照の設定とセルの値の参照 Dim s As String Dim x As Double Set p = Worksheets(" シート名 ").Range(" セル範囲 ") s = p.cells(, ).Text 文字列として参照する x = p.cells(, ).Value 数値として参照する () セル参照の設定とセルへの値の設定 Set p = Worksheets(" シート名 ").Range(" セル範囲 ") p.cells(, ).Value = string 文字列として設定する p.cells(, ).Value =. 数値として設定する

. 例題による演習. 準備 () 指定された URL からサンプル ファイルをダウンロードして保存しなさい () Excel を起動してサンプル ファイルを開く () Alt + F とキー操作して VBA を起動する () 新しいプロシジャを作成する 挿入 標準モジュール 次のプログラムを入力しなさい これはメッセージボックスで "Hello, world!" と返してくるプログラムである MsgBox 関数を使用する例である -------------------------------( この罫線は記入しない ) Sub ex0() MsgBox ("Hello, world!") -------------------------------( この罫線は記入しない ) () 実行ボタンをクリックして実行する ( 注 ) 中止するときは ボタンをクリックする 以下, 例題ごとに ()() を繰り返しす. 例題 ex0 セルの値の足し算 () C 列の つの値を足して, その結果を 行目のセル (C0) に書き込むプログラムを作成しなさい 左端の行番号は入力しなくてよい Sub ex0() Set p = Worksheets("a").Range("C:C0") p.cells(, ).Value = p.cells(, ).Value + p.cells(, ).Value. プロシジャの始まり ex0 はプロシジャ名 () は必須 プロシジャは一般に次の構成からなる Sub プロシジャ名 () 変数の型宣言... 処理.... p をオブジェクト変数として宣言する セル範囲を指し示すオブジェクトとして使用するため. p にワークシート "a" のセル範囲 "C:E0" を設定する. セルの値を参照して足し算をする 結果をセルに書き込む ここで, セル範囲の最も左上のセル位置を (,) と表す Cells(,) は, セル範囲の 行 列目のセルを指す Cells(,) は, セル範囲の 行 列目のセルを指す Cells(,) は, セル範囲の 行 列目のセルを指す Value は, セル内の値を指す つまり p.cells(i,j).value は, セル範囲 p の,i 行 j 列目のセルの値 という意味 実は, セル範囲の指定を "C" とだけしてもよい 結果は同じである 要するに, 最も左上のセル位置さえ指定すればよい Cells(i,j) はそこからの相対位置のセルを指すことになる. プロシジャの終わり

ex0 セルの値の足し算 () 上の応用として, 行目の つのセルの値を横に足して, 結果を 行 列目 (E) に書き込むプログラムを作成しなさい Sub ex0() Set p = Worksheets("a").Range("C")? ex0 If...Then によるカテゴライズ 人について,0cm 以上を " 高い ",0cm 未満を " ふつう " とカテゴライズするプログラムを作成しなさい 結果を E 列に書き込みなさい 0 Sub ex0() Set p = Worksheets("a").Range("D") '... 太郎 If p.cells(, ).Value >= 0 Then p.cells(, ).Value = " 高い " p.cells(, ).Value = " ふつう " '... 花子? '... 一郎? 次の構文は,If...Then による判断と分岐の例である 上のプログラムは, 構文 に当たる ( 構文 ) 条件式が True ならば, 処理を実行する ジャンプ命令がなければ の次へ進む 条件式が False ならば, の次へ進む If 条件式 Then 処理 ( 構文 ) 条件式が True ならば, 処理 を実行する ジャンプ命令がなければ の次へ進む 条件式が False ならば, の次へ進み処理 を実行する ジャンプ命令がなければ の次へ進む If 条件式 Then 処理 処理 ( 構文 ) 条件式 が True ならば, 処理 を実行する ジャンプ命令がなければ の次へ進む 条件式 が False ならば, 次の If へ進む 条件式 が True ならば, 処理 を実行する ジャンプ命令がなければ の次へ進む

条件式 が False ならば, 次の If へ進む 条件式 が True ならば, 処理 を実行する ジャンプ命令がなければ の次へ進む 条件式 が False ならば, の次の処理 を実行する ジャンプ命令がなければ の次へ進む If 条件式 Then 処理 If 条件式 処理 If 条件式 処理 処理 ex0 For...Next による繰り返し 人について,0cm 以上を " 高い ",0cm 未満を " ふつう " とカテゴライズするプログラムを作成しなさい 0 Sub ex0() Dim i As Integer Set p = Worksheets("a").Range("D") For i = To If p.cells(i, ).Value >= 0 Then p.cells(i, ).Value = " 高い "?. p をオブジェクト変数として宣言する. i を整数型の変数として宣言する. p にワークシート "a" のセル範囲 "D" を設定する ~. インデックスや添え字の値が規則的に変化して, 同種の処理を繰り返すとき,For...Next 構文を使用する 次のような構文である For 変数 = 初期値 To 終値 Step 増分値処理 Next 変数これは, 次の意味である 変数 ( 添え字など ) の値を初期値に設定して 回処理を実行する 次に変数の値を増分値だけ増やした値に変えて再度処理を実行する 同じく変数の値を増分値だけ増やした値に変えて再度処理を実行する これを繰り返す 変数を増分値だけ増やした値が終値を超えたら, 処理を実行しないで Next の次へ進む Next の後の変数はなくてもよい Step のあとの増分値が のときは省略してよい この例では, 変数 i を から まで つずつ変えて, 行 ~0 行の処理を 回繰り返している なお,For...Next は入れ子の構文にして使用できる ex0 Do While...Loop による繰り返し与えられた 0 進数を 進数に変換するプログラムを作成しなさい Sub ex0() Dim shou, i As Integer

0 0 0 '... p にセル範囲 "D" を設定する Set p = Worksheets("a").Range("D") '... 与えられた 0 進数を shou に設定する shou = p.cells(, 0).Value '... 行カウンタ i に を設定する ( 行目の意味 ) i = '... shou が正である限り繰り返す Do While shou > 0 '... shou を で割った余りを (i,) に設定する p.cells(i, ).Value = shou Mod '... shou を で割った商を (i,) に設定する p.cells(i, ).Value =? '... 上で求めた商を shou に設定し直す shou = p.cells(i, ).Value '... 行カウンタ i を つ増やす i = i + Loop 0 進数 shou を 進数に変換する方法は, 次の通りである () shou を で割った余りを, 進数の右端から左へ向けて並べる () shou を で割った商を,shou の値に設定し直す () 上の ()() を繰り返す () shou>0 でなくなったら ( つまり shou の値が 0 になったら ), ストップする このプログラムでは次のようにして実現している. 変数 shou,i を Integer( 整数型 ) として宣言する. 変数 p をオブジェクト変数として宣言する 0.. Do While...Loop へ入る前の初期設定をしている Do While...Loop は次の構文をしている Do While 条件式処理 Loop 条件式が True ならば, 回処理を実行する そのあと再び条件式をみる True ならば再び処理を実行する こうして, 条件式が True の間処理を実行し続ける 条件式が False になったら, 処理を実行しないで,Loop の次に進む 処理の過程で条件式を変更するような仕組みを組み込んでおくことが大事なポイントとなる ~0. 上に書いた ()()()() の処理に該当することを繰り返している. 再度処理の繰り返しに入る準備として,shou に商の値を設定している. 同じく処理の繰り返しに入る準備として,i に次の出力行の値を設定している ex0 並べ替え ( 整列,sort)() 00 個の整数を小さいものから順に並べるプログラムを作成しなさい 方法は基本選択法である なお,C 列の数をあらかじめ D 列にコピーした数を用いて並べ替えを実行しなさい C 列の数はそのまま

保存しておくものとする 0 0 0 Sub ex0() '... 必要な変数の型宣言 Dim i, j, tmp As Integer '... p にセル範囲 "D" を設定する Set p = Worksheets("a").Range("D") '... 基準の行を表す i を から まで つずつ変えながら実行する For i = To '... 比較対象の行を表す j を i+ から 00 まで つずつ変えながら実行する For j =? '... 基準の i 行目の数より j 行目の数が小さいならば If p.cells(i, ).Value > p.cells(j, ).Value Then '... i 行目の数と j 行目の数とを入れ替える tmp = p.cells(i, ).Value p.cells(i, ).Value = p.cells(j, ).Value p.cells(j, ).Value =? Next j ex0 並べ替え ( 整列,sort)() 上のプログラムのように, セルからの読み込みと, セルへの書き込みとを頻繁に行う方法は時間がかかる そこで, はじめにセルから配列にすべての数値を読み込んで, 配列内で整列を実施し, その結果をセルに書き出すようなプログラムに改良しなさい 0 Sub ex0() '... 必要な変数と配列の型宣言 Dim i, j, tmp As Integer Dim ia(00) As Integer '... p にセル範囲 "D" を設定する Set p = Worksheets("a").Range("C") '... 配列 ia にもとの数を読み込む For i = To 00 ia(i) = p.cells(i, ).Value '... 基準の行を表す i を から まで つずつ変えながら実行する For i = To

0 0 0 '... 比較対象の行を表す j を i+ から 00 まで つずつ変えながら実行する For j = i + To 00 '... 基準の i 行目の数より j 行目の数が小さいならば If ia(i) > ia(j) Then '... i 行目の数と j 行目の数とを入れ替える tmp =?? =?? = tmp Next j '... 配列 ia の数を書き出す For i = To 00 p.cells(i, ).Value = ia(i) 以上