PowerPoint プレゼンテーション

Similar documents
PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション


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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション


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

PowerPoint プレゼンテーション

プレポスト【問題】

コンピュータ概論

Microsoft Word _VBAProg1.docx

Microsoft Word - ŁtŸ^‡S

ファイル操作-インターネットキャッシュ

Lesson 1 1 EXVBA2000 Lesson01 Lesson01.xls 2


PowerPoint プレゼンテーション

sinfI2005_VBA.doc

1. 入力画面

ICONファイルフォーマット

ExcelVBA


Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

ルーレットプログラム

VBM01#解答解説# indd

データアダプタ概要

JavaプログラミングⅠ

DAOの利用

単語の比較とスペルチェック COMPARA Word のテキスト内にある単語を抽出し 異なり語のリストを作成するプログラムです また Word のテキスト内の単語 ( または単語リスト ) を 先に作成した単語リストと照合して その異同を確かめます フォーム 単語リスト単語集計同語検索異語検索同語リ

1. 入力画面

94 expression True False expression FalseMSDN IsNumber WorksheetFunctionIsNumberexpression expression True Office support.office.com/ja-jp/ S

PowerPoint プレゼンテーション

ブロック崩し風テニス

3,, となって欲しいのだが 実際の出力結果を確認すると両方の配列とも 10, 2, 3,, となってしまっている この結果は代入後の配列 a と b は同じものになっていることを示している つまり 代入演算子 = によるの代入は全要素のコピーではなく 先をコピーする ため 代入後の a と b は


バスケットボール

アプリケーション

Microsoft PowerPoint - vp演習課題

連立方程式の解法

MS-ExcelVBA 基礎 (Visual Basic for Application)

TEXTOS-S: 検索 置換 連立検索置換式を使って 資料をマークし または変形します マークと 変形を同時にすることも可能です 検索式にはリテラル ( 文字列そのもの ) ワイルドカード 正規表現が選択できます 上のテキストボックスに検索式を直接書き込むときは [Ctrl]+[Enter] を押

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

構造体

untitled

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

ASP.NET 2.0 Provider Model 概要


LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

Microsoft PowerPoint - 09.pptx

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

D0050.PDF

ファイル操作-バイナリファイル

Prog2_12th

CONTEC DIOプロバイダ ユーザーズガイド

データベース1

UIOUSBCOM.DLLコマンドリファレンス

3D回転体プログラム

Microsoft PowerPoint ppt

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される


情報基礎A

VB実用⑦ エクセル操作Ⅰ

ハッシュテーブル

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

データベース1

ランボール

目次 更新履歴... 1 はじめに... 3 レコードセット?... 3 準備... 5 SQL でデータを取得する... 6 データのループ処理... 7 列の値を取得する... 7 対象行を変更する (MoveFirst, MoveNext, MovePrevious, MoveLast)...

正規表現応用

D0120.PDF

Microsoft PowerPoint - prog03.ppt

ブロック パニック

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

プロシード

回文作成支援プログラム

cp-7. 配列

Microsoft PowerPoint - ruby_instruction.ppt

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

6.1 工 程 管 理 (ネットワーク 工 程 表 ) 159 VBA( 実 行 結 果 例 ) 出 力 結 果 シート 出 力 結 果 を 図 に 描 くと 下 図 のようになる. 図 6.3 ネットワーク 工 程 表 ( 出 力 結 果 より 作 図 )

回文作成支援プログラム

プロセス間通信

承 認

csv csv

MISAO with WPF

JavaプログラミングⅠ

外周部だけ矩形配列

Excel ダッシュボードのご紹介 株式会社アイエルアイ総合研究所内藤慶一

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from

ii

チア ダンス

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

Java知識テスト問題

EXCEL VBA講座

ファイル操作

動的串刺し計算のコツ

D0020.PDF

Microsoft Word - HowToConvertIdwToDwg.doc

2013 年 8 月 14 日 管理図作成マニュアル ( 案 ) 益永八尋 Ⅰ. プログラムの概要 品質管理において必要な QC7 道具の一つである管理図作成のプログラムを作成した このプログラムは 下記の管理図を作成するものである 1 BerX-R 管理図 2Me 管理図 3X 管理図 4np 管

JAVA入門

Transcription:

配列とコレクション

配列の使い方 固定配列 動的配列 コレクションの使い方 今日の目的

固定配列の宣言例 プロシージャレベル Dim arybuf(0 To 5) As Long モジュールレベル Private arybuf(0 To 5) As Long Public arybuf(0 To 5) As Long

固定配列の宣言例 プロシージャレベル Dim arybuf(0 To 5) As Long モジュールレベル Private arybuf(0 To 5) As Long Public arybuf(0 To 5) As Long 配列の最小範囲と最大範囲を指定この場合は下記のような要素 arybuf(0), arybuf(1), arybuf(2) arybuf(3), arybuf(4), arybuf(5)

固定配列の宣言例 最小範囲を省略することもできる Dim arybuf(5) As Long

固定配列の宣言例 最小範囲を省略することもできる Option Base 1 Dim arybuf(5) As Long 1~5 になる Option Base 0 * 省略した場合と同じ動き Dim arybuf(5) As Long 0~5 になる

固定配列の宣言例 プロシージャレベル Dim arybuf(0 To 5) As Long モジュールレベル Private arybuf(0 To 5) As Long Public arybuf(0 To 5) As Long 最小範囲と最大範囲は明示しとこう

固定配列の宣言例 Const lmax As Long = 5 Dim arybuf(0 To lmax) As Long 範囲には定数をしていできる ( 変数はダメ )

固定配列の使用例 Const lmax As Long = 5 Dim arybuf(0 To lmax) As Long Dim i As Long For i = LBound(aryBuf) To UBound(aryBuf) Debug.Print i & ":" & arybuf(i) Next i

固定配列の使用例 Const lmax As Long = 5 Dim arybuf(0 To lmax) As Long Dim i As Long For i = LBound(aryBuf) To UBound(aryBuf) Debug.Print i & ":" & arybuf(i) Next i LBound() は配列の下限を取得するこの場合は 0 がかえる

固定配列の使用例 Const lmax As Long = 5 Dim arybuf(0 To lmax) As Long Dim i As Long For i = LBound(aryBuf) To UBound(aryBuf) Debug.Print i & ":" & arybuf(i) Next i UBound() は配列の上限を取得するこの場合は 5 がかえる

固定配列の使用例 Const lmax As Long = 5 Dim arybuf(0 To lmax) As Long Dim i As Long For i = LBound(aryBuf) To UBound(aryBuf) Debug.Print i & ":" & arybuf(i) Next i

多次元配列の宣言例 Dim arybuf(0 To 5, 0 To 1) As String 次元をコンマで区切って宣言できる最高で 60 次元までできる

多次元配列の使用例 Dim arybuf(0 To 5, 0 To 1) As String Dim i As Long Dim j As Long For i = LBound(aryBuf, 1) To UBound(aryBuf, 1) For j = LBound(aryBuf, 2) To UBound(aryBuf, 2) Debug.Print i &, & j & ":" & arybuf(i, j) Next j Next i

多次元配列の使用例 Dim arybuf(0 To 5, 0 To 1) As String Dim i As Long Dim j As Long For i = LBound(aryBuf, 1) To UBound(aryBuf, 1) For j = LBound(aryBuf, 2) To UBound(aryBuf, 2) Debug.Print i &, & j & ":" & arybuf(i, j) Next j Next i LBound,UBound の第二引数に次元を指定することで その次元の下限 上限を取得できる

多次元配列の使用例 Dim arybuf(0 To 5, 0 To 1) As String Dim i As Long Dim j As Long For i = LBound(aryBuf, 1) To UBound(aryBuf, 1) For j = LBound(aryBuf, 2) To UBound(aryBuf, 2) Debug.Print i & ", & j & ":" & arybuf(i, j) Next j Next i 1 次元目の下限を求める 0 になる

多次元配列の使用例 Dim arybuf(0 To 5, 0 To 1) As String Dim i As Long Dim j As Long For i = LBound(aryBuf, 1) To UBound(aryBuf, 1) For j = LBound(aryBuf, 2) To UBound(aryBuf, 2) Debug.Print i & ", & j & ":" & arybuf(i, j) Next j Next i 1 次元目の上限を求める 5 になる

多次元配列の使用例 Dim arybuf(0 To 5, 0 To 1) As String Dim i As Long Dim j As Long For i = LBound(aryBuf, 1) To UBound(aryBuf, 1) For j = LBound(aryBuf, 2) To UBound(aryBuf, 2) Debug.Print i & ", & j & ":" & arybuf(i, j) Next j Next i 2 次元目の下限を求める 0 になる

多次元配列の使用例 Dim arybuf(0 To 5, 0 To 1) As String Dim i As Long Dim j As Long For i = LBound(aryBuf, 1) To UBound(aryBuf, 1) For j = LBound(aryBuf, 2) To UBound(aryBuf, 2) Debug.Print i & ", & j & ":" & arybuf(i, j) Next j Next i 2 次元目の上限を求める 1 になる

多次元配列の使用例 Dim arybuf(0 To 5, 0 To 1) As String Dim i As Long Dim j As Long For i = LBound(aryBuf, 1) To UBound(aryBuf, 1) For j = LBound(aryBuf, 2) To UBound(aryBuf, 2) Debug.Print i & ","; j & ":" & arybuf(i, j) Next j Next i

動的配列動的配列を宣言すると コードの実行中に配列の サイズを変更できる

動的配列の例 Dim arybuf() As String lmax = 5 ' 動的配列では変数での範囲指定が可能 ReDim arybuf(0 To lmax) As String

動的配列の例 Dim arybuf() As String lmax = 5 ' 動的配列では変数での範囲指定が可能 ReDim arybuf(0 To lmax) As String

動的配列の例 Dim arybuf() As String lmax = 5 ' 動的配列では変数での範囲指定が可能 ReDim arybuf(0 To lmax) As String

動的配列の例 Dim arybuf() As String lmax = 5 ' 動的配列では変数での範囲指定が可能 ReDim arybuf(0 To 0) As String arybuf(0) = ゆっくりしていってね ReDim arybuf(0 To lmax) As String

動的配列の例 Dim arybuf() As String lmax = 5 ' 動的配列では変数での範囲指定が可能 ReDim arybuf(0 To 0) As String arybuf(0) = ゆっくりしていってね ReDim arybuf(0 To lmax) As String

動的配列の例 Dim arybuf() As String lmax = 5 ' 動的配列では変数での範囲指定が可能 ReDim arybuf(0 To 0) As String arybuf(0) = ゆっくりしていってね ReDim Preserve arybuf(0 To lmax) As String

動的配列の例 Dim arybuf() As String lmax = 5 ' 動的配列では変数での範囲指定が可能 ReDim arybuf(0 To 0) As String arybuf(0) = ゆっくりしていってね ReDim Preserve arybuf(0 To lmax) As String

動的配列の例 Dim arybuf() As String ReDim arybuf(0 To 5, 0 To 1) As String arybuf(0, 0) = " オプーナ ザ ワゴン ReDim Preserve arybuf(0 To 6, 0 To 1) As String

動的配列の例 Dim arybuf() As String ReDim arybuf(0 To 5, 0 To 1) As String arybuf(0, 0) = " オプーナ ザ ワゴン ReDim Preserve arybuf(0 To 6, 0 To 1) As String

動的配列の例 Dim arybuf() As String ReDim arybuf(0 To 5, 0 To 1) As String arybuf(0, 0) = " オプーナ ザ ワゴン ReDim Preserve arybuf(0 To 5, 0 To 2) As String

動的配列の解放 Eraseステートメントを使用する Erase 動的配列 メモリの解放 配列を再度しようするには ReDim が必要 Erase 固定配列 要素の再初期化

Const lmax As Long = 5 Dim arydyn() As String Dim aryfix(0 To lmax) As String ReDim arydyn(0 To lmax) As String arydyn(0) = " オプーナ aryfix(0) = arydyn(0) ~ 略 ( 要素を埋めます ) ~ Debug.Assert false Erase aryfix Erase arydyn Debug.Assert false

Const lmax As Long = 5 Dim arydyn() As String Dim aryfix(0 To lmax) As String ReDim arydyn(0 To lmax) As String arydyn(0) = " オプーナ aryfix(0) = arydyn(0) ~ 略 ( 要素を埋めます ) ~ Debug.Assert false Erase aryfix Erase arydyn Debug.Assert false

Const lmax As Long = 5 Dim arydyn() As String Dim aryfix(0 To lmax) As String ReDim arydyn(0 To lmax) As String arydyn(0) = " オプーナ aryfix(0) = arydyn(0) ~ 略 ( 要素を埋めます ) ~ Debug.Assert false Erase aryfix Erase arydyn Debug.Assert false

Const lmax As Long = 5 Dim arydyn() As String Dim aryfix(0 To lmax) As String ReDim arydyn(0 To lmax) As String arydyn(0) = " オプーナ aryfix(0) = arydyn(0) ~ 略 ( 要素を埋めます ) ~ Debug.Assert false Erase aryfix Erase arydyn Debug.Assert false

Const lmax As Long = 5 Dim arydyn() As String Dim aryfix(0 To lmax) As String ReDim arydyn(0 To lmax) As String arydyn(0) = " オプーナ aryfix(0) = arydyn(0) ~ 略 ( 要素を埋めます ) ~ Debug.Assert false Erase aryfix Erase arydyn Debug.Assert false

Const lmax As Long = 5 Dim arydyn() As String ReDim arydyn(0 To lmax) As String Debug.Print LBound(aryDyn) ~ 略 ( 要素を埋めます ) ~ Erase arydyn Debug.Print LBound(aryDyn)

Const lmax As Long = 5 Dim arydyn() As String ReDim arydyn(0 To lmax) As String Debug.Print LBound(aryDyn) ~ 略 ( 要素を埋めます ) ~ Erase arydyn Debug.Print LBound(aryDyn)

Const lmax As Long = 5 Dim arydyn() As String ReDim arydyn(0 To lmax) As String Debug.Print LBound(aryDyn) ~ 略 ( 要素を埋めます ) ~ Erase arydyn Debug.Print LBound(aryDyn)

Const lmax As Long = 5 Dim arydyn() As String ReDim arydyn(0 To lmax) As String ~ 略 ( 要素を埋めます ) ~ Erase arydyn Debug.Print Lbound(aryDyn)

Private Function IsAllocatedArray (ByRef ary() As String) On Error GoTo ErrCatch: Dim i As Long i = LBound(ary) IsAllocatedArray = True Exit Function ErrCatch: If err.number <> 9 Then err.raise err.number, err.source, err.description, err.helpfile, err.helpcontext End If IsAllocatedArray= False End Function

Private Function IsArrocatedArray(ByRef ary() As String) On Error GoTo ErrCatch: Dim i As Long i = LBound(ary) IsArrocatedArray = True Exit Function ErrCatch: If err.number <> 9 Then err.raise err.number, err.source, err.description, err.helpfile, err.helpcontext End If IsArrocatedArray = False End Function

Private Function IsAllocatedArray (ByRef ary() As String) On Error GoTo ErrCatch: Dim i As Long i = LBound(ary) IsAllocatedArray= True Exit Function ErrCatch: If err.number <> 9 Then err.raise err.number, err.source, err.description, err.helpfile, err.helpcontext End If IsAllocatedArray = False End Function LBound がエラーではない = 配列として使用できる

Private Function IsAllocatedArray (ByRef ary() As String) On Error GoTo ErrCatch: Dim i As Long i = LBound(ary) IsAllocatedArray= True Exit Function ErrCatch: If err.number <> 9 Then err.raise err.number, err.source, err.description, err.helpfile, err.helpcontext End If IsAllocatedArray= False End Function LBound がエラー ErrCatch ラベルへ飛ぶ

Private Function IsAllocatedArray (ByRef ary() As String) On Error GoTo ErrCatch: インデックス範囲外の Dim i As Long エラーじゃなければ i = LBound(ary) そのエラーを再度発生させ IsArrocatedArray = True る Exit Function ErrCatch: If err.number <> 9 Then err.raise err.number, err.source, err.description, err.helpfile, err.helpcontext End If IsAllocatedArray = False End Function

Const lmax As Long = 5 Dim arydyn() As String ReDim arydyn(0 To lmax) As String ~ 略 ( 要素を埋めます ) ~ Debug.Print IsAllocatedArray (arydyn) Erase arydyn Debug.Print IsAllocatedArray (arydyn)

Const lmax As Long = 5 Dim arydyn() As String ReDim arydyn(0 To lmax) As String ~ 略 ( 要素を埋めます ) ~ Debug.Print IsAllocatedArray (arydyn) Erase arydyn Debug.Print IsAllocatedArray (arydyn)

Const lmax As Long = 5 Dim arydyn() As String ReDim arydyn(0 To lmax) As String ~ 略 ( 要素を埋めます ) ~ Debug.Print IsArrocatedArray(aryDyn) Erase arydyn Debug.Print IsArrocatedArray(aryDyn)

Const lmax As Long = 5 Dim arydynlng() As Long ReDim arydynlng(0 To lmax) As Long ~ 略 ( 要素を埋めます ) ~ Debug.Print IsAllocatedArray (arydynlng) Erase arydynlng Debug.Print IsAllocatedArray (arydynlng) 動的配列の型を変えると型の不一致エラーになる

Private Function IsAllocatedArray (ByRef ary As Variant) On Error GoTo ErrCatch: Dim i As Long i = LBound(ary) IsAllocatedArray= True Exit Function ErrCatch: If err.number <> 9 Then err.raise err.number, err.source, err.description, err.helpfile, err.helpcontext ary As Variant End If IsAllocatedArray= False End Function 引数の変更 ary() As String

Const lmax As Long = 5 Dim arydynlng() As Long ReDim arydynlng(0 To lmax) As Long ~ 略 ( 要素を埋めます ) ~ Debug.Print IsAllocatedArray (arydynlng) Erase arydynlng Debug.Print IsAllocatedArray (arydynlng) 引数を Variant にすると予定通り動作する

Variant 型に配列を格納 Dim arybuf(0 To 5) As String arybuf(0) = " オプーナ ザ ワゴン Dim v As Variant v = arybuf For i = LBound(v) To UBound(v) Debug.Print i & ":" & v(i) Next i Variant 型の変数に配列を代入すると 配列として普通に使えるようになります

配列の使い方 固定配列 動的配列 コレクションの使い方 今日の目的

コレクション 異なる型やオブジェクトを格納できる 各要素の追加 削除が容易 連想配列としても使用できる

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim vdata As Variant For Each vdata In cll Debug.Print TypeName(vData) & ":" & vdata Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) バリアント型に一端格納しないパターンの例 Call cll.add(sheet1.cells(1, 1)) Dim i As Long For i = 1 To cll.count Debug.Print TypeName(cll.Item(i)) & ":" & cll.item(i) Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim i As Long For i = 1 To cll.count Debug.Print TypeName(cll.Item(i)) & ":" & cll.item(i) Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Dim i As Long For i = 1 To cll.count Debug.Print TypeName(cll.Item(i)) & ":" & cll.item(i) Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Call cll.add( ゆっくりしていってね, Before:=1 ) Dim i As Long For i = 1 To cll.count Debug.Print TypeName(cll.Item(i)) & ":" & cll.item(i) Next Set cll = Nothing Before:=x とすることで要素 x の前に新しい要素を追加する

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Call cll.add( ゆっくりしていってね, Before:=1 ) Dim i As Long For i = 1 To cll.count Debug.Print TypeName(cll.Item(i)) & ":" & cll.item(i) Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Call cll.add( ゆっくりしていってね, After:=1 ) Dim i As Long For i = 1 To cll.count Debug.Print TypeName(cll.Item(i)) & ":" & cll.item(i) Next Set cll = Nothing After:=x とすることで要素 x の後に新しい要素を追加する

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Call cll.add( ゆっくりしていってね, After:=1 ) Dim i As Long For i = 1 To cll.count Debug.Print TypeName(cll.Item(i)) & ":" & cll.item(i) Next Set cll = Nothing

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Call cll.remove( 1 ) Dim i As Long For i = 1 To cll.count Debug.Print TypeName(cll.Item(i)) & ":" & cll.item(i) Next Set cll = Nothing Remove メソッドを使用することで指定の要素を削除できる

Dim cll As New Collection Call cll.add(" オプーナ ") Call cll.add(#1/3/2008 3:32:00 AM#) Call cll.add(23432&) Call cll.add(sheet1.cells(1, 1)) Call cll.remove( 1 ) Dim i As Long For i = 1 To cll.count Debug.Print TypeName(cll.Item(i)) & ":" & cll.item(i) Next Set cll = Nothing

連想配列 String 型の一意のキーを指定して効果発動 プログラマはキーを元にデータの取得 削除ができる

Dim cll As New Collection Call cll.add(" カイジ ", " 顎 ") Debug.Print cll.item(" 顎 ") Set cll = Nothing

Dim cll As New Collection Call cll.add(" カイジ ", " 顎 ") Call cll.add( アカギ, 倍プッシュ ", before:=" 顎 ") Set cll = Nothing

Dim cll As New Collection Call cll.add(" カイジ ", " 顎 ") Call cll.add( アカギ, 倍プッシュ ", before:=" 顎 ") Call cll.add( 黒沢, 最強, after:= 倍プッシュ ") Set cll = Nothing

Dim cll As New Collection Call cll.add(" カイジ ", " 顎 ") Call cll.add( アカギ, 倍プッシュ ", before:=" 顎 ") Call cll.add( 黒沢, 最強, after:= 倍プッシュ ") Call cll.remove(" 最強 ") Set cll = Nothing

連想配列 String 型の一意のキーを指定して効果発動 プログラマはキーを元にデータの取得 削除ができる

Private Function HasCollectionKey(ByRef cll As Collection, _ ByVal keyname As String) As Boolean On Error GoTo ErrCatch Dim lret As Long lret = VarType(cll.Item(keyName)) HasCollectionKey = True Exit Function ErrCatch: If err.number <> 5 Then キーの存在チェック err.raise err.number, err.source, err.description, _ err.helpfile,err.helpcontext Exit Function End If HasCollectionKey = False End Function

Private Function HasCollectionKey(ByRef cll As Collection, _ ByVal keyname As String) As Boolean On Error GoTo ErrCatch Dim lret As Long lret = VarType(cll.Item(keyName)) HasCollectionKey = True Exit Function ErrCatch: If err.number <> 5 Then キーの存在チェック err.raise err.number, err.source, err.description, _ err.helpfile,err.helpcontext Exit Function End If HasCollectionKey = False End Function

Public Sub TestHasCollectionKey() Dim cll As New Collection ' キーのチェック Call cll.add(" アカギ ", " 倍プッシュ ") Debug.Print "True のはず ;" & HasCollectionKey(cll, " 倍プッシュ ") Debug.Print "False のはず ;" & HasCollectionKey(cll, " 最強 ") ' オブジェクトも検索可能 Call cll.add(sheet1, " シート 1") Debug.Print "True のはず ;" & HasCollectionKey(cll, " シート 1 ") Debug.Print "False のはず ;" & HasCollectionKey(cll, " シート 2 ") Set cll = Nothing End Sub

ExcelVBA006.xlsmの標準モジュール mdlarraysample サンプル 配列のサンプルプログラム mdlcollectionsample コレクションのサンプルプログラム

配列とコレクション