vbaに関するinderbuxtehudeのブックマーク (8)

  • Office TANAKA - VBAのステートメント[Function]

    Functionステートメント 構文 [Public | Private | Friend] [Static] Function name [(arglist)] [As type] キーワードPublicは省略可能です。すべてのモジュールから参照できるFunctionプロシージャを宣言します。 キーワードPrivateは省略可能です。Functionプロシージャを記述したモジュールからのみ参照できるFunctionプロシージャを宣言します。 キーワードFriendは省略可能です。クラスモジュール内で使用します。 nameには、Functionプロシージャの名前を指定します。 引数arglistは省略可能です。Functionプロシージャが受け取る引数リストを指定します。 typeは省略可能です。Typeには、Functionプロシージャの返り値の型を指定します。 解説 Functionプ

  • VBA基本(プロシージャ間の変数の受け渡し:その2)

    プロシージャの分割と、変数の受け渡しについての続きです。 プロシージャの分割と、変数の受け渡しについては、「変数の有効期間(範囲)、プロシージャ間の変数の受け渡し」で軽く説明しましたが、さらに掘り下げて説明しておく必要があります。 こちらでは、プロシージャ間の変数の受け渡しに絞って説明してみます。なお、モジュールレベル変数の利用については、「変数の有効期間(範囲)、プロシージャ間の変数の受け渡し」以上の説明が特にないので、ここでは触れません。 手始めはSubプロシージャ同士の変数の受け渡しです。 カッコ内に引数となる変数を宣言して、呼び元、呼び先ともに同じデータ型、個数を守って受け渡すことができます。 Option Explicit ' TEST2を呼んで結果を受け取りたい Sub TEST1() Dim 変数 As Long 変数 = 1 Call TEST2(変数) MsgBox 変数

  • Office TANAKA - 今さら聞けないVBA[括弧()はどんなときに使うの?]

    VBAでは、どんなときに括弧を使うのか。さらに、巷でよく見かける"文法的に"間違った括弧の使い方なども動画で詳しく解説しています。ぜひ、ご覧ください。Youtubeでは、ほかにもたくさんの動画を公開しています。チャンネル登録をお忘れなく! Office TANAKAチャンネル たとえば、次のようなマクロがあったとします。 Sub Sample1() Dim Re As Long Re = MsgBox("OKですか?", vbYesNo) If Re = vbYes Then MsgBox "それはよかった", vbInformation End If End Sub 上のマクロでは、2つのMsgBoxが使われています。しかし、最初のMsgBoxは引数を括弧で囲っているのに、2番目のMsgBoxは括弧で囲っていません。試しに、最初のMsgBoxで括弧をはずすと、エラーになります。 逆に、2

  • Office TANAKA - 変数の使い方[部屋数を変えられる動的配列]

    配列は、いわば集合住宅のようなものです。1棟の建物に複数の世帯が同時に住むことが可能です。配列を使用するときは、配列の宣言時に部屋数(要素数)を指定します。 では、プログラムの実行中に、要素が増加するような場合はどうでしょう。あるいは、プログラムを作成する時点では、いくつの要素を格納するかわからないときは、どうしたらいいでしょう。そんなケースで役立つのが動的配列という使い方です。 動的配列は、宣言時に要素数を指定しません。 Sub Sample33() Dim Member() As String End Sub 一般的な配列では「Member(5)」などと要素数を指定するところを、「Member()」と括弧だけを指定します。これで、変数Memeberは配列として使用できます。ただし、この宣言時点では要素数が確定していませんので、実際には使えません。そこで、プログラムのコード中で要素数を再

  • Office TANAKA - VBAデータベース的活用法[検索の基本はFindメソッド]

    まずは[検索]テクニックです。下のようなデータを対象とします。[商品コード]列から「A007」を検索してみましょう。 Sub Sample01() Dim FoundCell As Variant With Worksheets("Sheet1") Set FoundCell = .Range("A2:A11").Find("A007") If FoundCell Is Nothing Then MsgBox "A007は見つかりません。", vbExclamation Else MsgBox "A007は、" & FoundCell.Address & "です。" & vbCrLf & _ "A007は、" & FoundCell.Row & "行目です。", vbInformation End If End With End Sub Excelをデータベース的に使うとき、何はなくとも検

  • Office TANAKA - Excel VBA関数[Dir]

    引数attributesにボリュームラベルをしてすると、他の属性は無効になります。 Dir関数は、引数pathnameで指定したファイル名と一致した最初のファイル名を返します。続けて次のファイルを取得するときには、Dir関数に引数を与えずに実行します。 該当するファイルが見つからないとき、Dir関数は長さ0の文字列を返します。長さ0の文字列を返した直後、あるいは始めてDir関数を実行するときに引数を省略するとエラーが発生します。 Dir関数を再帰的に呼び出すことはできません。 サンプル 次の例は、C:\Windowsフォルダ内にあるファイルのうち、Wで始まるファイル名の数を表示します。 Sub Sample() Dim cnt As Integer, tmp As String tmp = Dir("C:\Windows\W*.*") Do While tmp <> "" cnt = cn

  • Office TANAKA - Excel VBA Tips[ブック・シートが存在するか調べる]

    サイトをご覧になった方からリクエストをいただきました。「特定のブックを開いているか、どうやってチェックしたらいいですか?」と。また、別の方から「'合計'という名前のシートがあるかどうか調べたい」というメールもちょうだいしました。これらは同じ考え方で実現できますので、一緒に解説しましょう。 ブックが開いているか調べる このテクニックは、実は「ファイルの操作」の「現在開いているブックの一覧を取得する」で解説しています。念のため同じコードを再度ご紹介します。 Sub Sample01() Dim wb As Workbook, flag As Boolean For Each wb In Workbooks If wb.Name = "Book1.xlsx" Then flag = True Next wb If flag = True Then MsgBox "Book1 を開いています。",

  • Office TANAKA - Excel VBA関数[InStr]

    一般的なVBAでは、文字列がNullになることは少ないので、Null値を返すことはないです。見つかったら1以上の数値を返し、見つからなかったら0を返す、と覚えておけばいいでしょう。 サンプル 次の例は、「ABCDE」の中から「D」を検索してその位置を表示します。 Sub Sample1() Dim String1 As String, String2 As String String1 = "ABCDE" String2 = "D" MsgBox InStr(String1, String2) End Sub 所見 InStr関数は、とても役に立つ関数です。ただし、単独で使うことは希でしょう。上記サンプルのように、ただ文字の位置を調べて終わるという作業は、実務ではほとんどありません。文字の位置を調べて、それを元に次の処理を行うのが一般的です。たとえば、セルに「田中 亨」のようなデータが入力

  • 1