タグ

ブックマーク / officetanaka.net (26)

  • 本来なら文字列として入力されているデータを、計算式の中で使える「セルのアドレス」に変換してくれる - ワークシート関数の解説(INDIRECT関数) excel ★

    書式 たとえば、任意のセルに「=A1」と入力すれば、そのセルからセルA1を参照できます。 INDIRECT関数を使うと、次のように、参照するセルのアドレスを文字列で指定できます。 「なんじゃ、そりゃ?」「はぁ?何に使うの?」と思ったあなた。その通りです。これだけだと、この関数がどれほど便利か分かりませんね。ポイントは、参照するセルのアドレスを文字列で指定できる、というところです。文字列で指定できるということは、参照したいセルのアドレスを、何とかして文字列で作成できれば、どこにあるセルでも参照できるということです。これ、超便利です。てか、INDIRECT関数を使えるようになると、Excelの数式作成スキルが256倍アップします(当社比)。 アドレスを文字列として作れればいいのですから、たとえば、文字列を結合できる&演算子を使って、次のようなこともできます。 文字列の"A"と数値の2を結合して

    fumokmm
    fumokmm 2021/04/15
  • Office TANAKA - トップページ

    誰でも必ずマクロが"読める"ようになって"書ける"ようになる「VBAベーシック」は、すべてのExcelユーザーに受講していただきたいです。ほかにも、数多くのセミナーを実施しています。最も重要なことは誰が教えるかということです。

    fumokmm
    fumokmm 2020/11/29
  • Office TANAKA - VBAのステートメント[Type]

    Typeステートメント 構文 [Private|Public] Type varname elementname[([subscripts])] As type End Type キーワードPublicは省略可能です。すべてのモジュールから参照できるユーザー定義型を宣言します。 キーワードPrivateは省略可能です。Typeステートメントを記述したモジュールからのみ参照できるユーザー定義型を宣言します。 varnameには、ユーザー定義型の名前を指定します。 elementnameには、ユーザー定義型を構成する要素の名前を指定します。 subscriptsは省略可能です。配列変数の次元を指定します。 typeには、ユーザー定義型を構成する要素のデータ型を指定します。 解説 ユーザー定義のデータ型を作成します。 Typeステートメントは、プロシージャレベルで使用します。 標準モジュール内で

    fumokmm
    fumokmm 2020/08/20
  • Office TANAKA - 変数の使い方[バリアント型を配列として使う]

    バリアント型変数は、どんなデータでも格納できる万能の型です。整数や文字列だけでなく、セル(Rangeオブジェクト)やワークシート(Worksheetオブジェクト)などのオブジェクトを格納することも可能です。もちろん、配列も格納できます。 Sub Sample39() Dim buf(3) As String, Member As Variant buf(1) = "tanaka" buf(2) = "suzuki" buf(3) = "yamada" Member = buf MsgBox Member(2) End Sub 上のコードは、バリアント型変数Memberに、配列変数のbufを代入しています。代入のあと、変数Memberは配列として操作できます。 配列をバリアント型変数に入れる バリアント型変数には、上記のように配列変数を代入することが可能ですが、一般的には「配列を返す関数」な

    fumokmm
    fumokmm 2020/08/20
  • Office TANAKA - VBAでVBEを操作する

    マクロを作成・編集するときはVBE(Visual Basic Edtor)を使います。あまり知られていませんが、VBAには、このVBEを操作するためのオブジェクトやプロパティも用意されています。一般的なテクニックではありませんし、必須の知識ではありませんけど、知っていると何かに役立つかもしれません。ここでは、コードモジュールの操作を中心に解説します。

    fumokmm
    fumokmm 2020/08/01
  • Office TANAKA - Excel VBA関数[Int]

    構文 Int(num) 引数numには、倍精度浮動小数点数型の数値または任意の数式を指定します。 解説 引数numの小数部分を取り除いた整数を返します。 Int関数の返り値は、引数numと同じデータ型になります。 引数numに負の数値を指定した場合、Int関数は引数numを超えない最大の負の整数を返します。 サンプル 次の例は、Int関数で数値を整数に丸めます。また、Int関数の返り値のデータ型を調べます。 Sub Sample() Dim a As Double, b As Double, c As Variant a = 1234.5678 b = -1234.5678 MsgBox Int(a) '1234が返ります MsgBox Int(b) '-1235が返ります c = Int(b) MsgBox VarType(c) '5(Double)が返ります End Sub

    fumokmm
    fumokmm 2020/06/11
    整数部の切り出し関数。似た用途の関数にFix関数があるが負の値の場合の挙動がちょっと違う。Intの方は引数の値を超えない最大の負の整数になる。
  • Office TANAKA - Excel VBA関数[Fix]

    構文 Fix(num) 引数numには、倍精度浮動小数点数型の数値または任意の数式を指定します。 解説 引数numの小数部分を取り除いた整数を返します。 Fix関数の返り値は、引数numと同じデータ型になります。 引数numに負の数値を指定した場合、Fix関数は引数num以上の最小の整数を返します。 サンプル 次の例は、Fix関数で数値を整数に丸めます。また、Fix関数の返り値のデータ型を調べます。 Sub Sample() Dim a As Double, b As Double, c As Variant a = 1234.5678 b = -1234.5678 MsgBox Fix(a) '1234が返ります MsgBox Fix(b) '-1234が返ります c = Fix(b) MsgBox VarType(c) '5(Double)が返ります End Sub

    fumokmm
    fumokmm 2020/06/11
    なるほど、整数部の取得ね。似た用途の関数にInt関数があるけど負の値の場合の挙動がことなる。
  • Office TANAKA - FileSystemObject[CreateTextFileメソッド]

    【書式】 FileSystemObject.CreateTextFile(filename[, overwrite[, unicode]]) 指定したファイル名を作成し、TextStreamオブジェクトを返します。 引数filenameには作成するファイル名を指定します。 引数overwriteは省略可能です。すでに同名ファイルが存在した場合に上書きするときはTrueを指定します。省略するとTrueとみなされます。 引数unicodeは省略可能です。Trueを指定するとUnicodeで作成します。Falseを指定するとASCIIファイルを作成します。省略するとFalseとみなされます。 引数overwriteにFalseを指定した場合、引数filenameに存在するファイル名を指定するとエラーになります。 CreateTextFileメソッドを実行すると、サイズ0のテキストファイルがただち

    fumokmm
    fumokmm 2020/05/22
  • Office TANAKA - Excel VBA関数[VarType]

    引数varnameにユーザー定義型を指定することはできません。 サンプル 次の例は、バリアント型変数の内部処理形式を表示します。 Sub Sample() Dim var As Variant var = "ABC" MsgBox VarType(var) '8を表示します var = 123 MsgBox VarType(var) '2を表示します var = 123.456 MsgBox VarType(var) '5を表示します var = Array("A", "B", "C") MsgBox VarType(var) '8204を表示します End Sub

    fumokmm
    fumokmm 2020/05/06
  • Office TANAKA - Excel 2016レビュー「Excelの使い方が激変する「スピル」」

    稿は、ProPlusに関する内容です。永続ライセンス版のExcel 2016やExcel 2019には実装されていません。このへんの意味が分からない人は、ぜひ下の動画をご覧ください。最新版のExcelは、2019ではなくProPlusだという件を解説しています。なお、再生すると音が出ますので、会社や電車の中でご覧になる場合は、ご注意ください。 また、稿の内容を動画でも解説しています。動画でご覧になりたい方はどうぞ。Youtubeでは、ほかにもたくさんの動画を公開しています。チャンネル登録をお忘れなく! Office TANAKAチャンネル 表計算ソフト暗黙のルール Excelに限らず、今までの表計算ソフトでは、暗黙のルールがありました。それは「値や数式を入力したセルにだけ結果を表示して、何も入力されていないセルに、プログラムが勝手に何かを代入しない」ということです。 たとえば上図のよう

    fumokmm
    fumokmm 2020/04/05
    スピルの詳しい解説
  • Office TANAKA - 今さら聞けないVBA[マクロとVBAの違い]

    インターネットの個人サイトだけでなく、書籍や雑誌、パソコンスクールや有料のセミナー、ひどいときはMicrosoftの公式ページでさえ、マクロとVBAという用語が混在して使われています。いや、白状しますが、当サイトだって、厳密に区別して使っているわけではありません(一応少しは意識していますけど)。 正確にいうと、マクロとVBAはまったく別です。 「マクロ」とは、Excelや他のアプリケーションなどを、あらかじめ決めた手順で制御する機能の名前です。Excelの機能名ですから「グラフ」「ピボットテーブル」「オートフィルター」などと同じ立場です。 一方の「VBA」は、Visual Basic for Applicationsの略称で、マクロ機能で作成する手順を記述するときに使うマクロ言語の名称です。実はExcelには、VBAではないマクロ言語もあります。試しに、シート見出しを右クリックして[挿入]

    fumokmm
    fumokmm 2020/04/01
    世代的にはVBA以前のことは知らないんだけど、VBA以外で動くマクロもあるんだね。パソコン通信はインターネット以外のものもあるよって話に似てる気がする。
  • Office TANAKA - シートの操作

    Excelの解説などでは「シート」と「ワークシート」が混在して使われています。ほとんどの場合は、「シート=ワークシート」と認識して間違いはありませんが、厳密に言うとイコールではありません。シートには次の種類があるからです。 ワークシート グラフシート Excel 5.0/95のモジュールシート Excel 5.0/95のダイアログシート Excel 4.0のマクロシート ワークシートは説明するまでもありませんね。グラフシートとは、グラフを表示する専用のシートです。グラフ ウィザードの最後でグラフの作成場所を聞かれますが、このとき「新しいシート」を選択すると自動的にグラフ シートが挿入されます。モジュールシートやダイアログシートは、現在のVBAが実装される前に使われていたExcel 5.0/95マクロで使用したシートです。マクロシートは、Excel 4.0のマクロを記述するための専用シート

    fumokmm
    fumokmm 2018/06/23
  • Office TANAKA - 変数の使い方[Setを使うケース]

    変数に値を入れるには「=」記号を使います。次のマクロは、文字列型の変数tmpに"tanaka"という文字列を格納します。 Sub Sample13() Dim tmp As String tmp = "tanaka" MsgBox tmp End Sub このように、変数に値を格納するときは「変数名 = 値」とします。これは、右辺を左辺に代入するという意味で「変数名 ← 値」のようなイメージです。 ところが、ときおり「Set 変数名 = 値」のように、Setという命令を使って変数に"何か"を代入しているコードがあります。 Sub Sample14() Dim ws As Worksheet Set ws = Sheets("Sheet1") MsgBox ws.Name End Sub Set ws = Sheets("Sheet1") は、変数wsにシート[Sheet1]を代入する命令で

    fumokmm
    fumokmm 2018/05/16
  • Office TANAKA - 変数の使い方[オブジェクトを入れる変数]

    変数は、格納する値によって、型を指定します。たとえば、整数を入れるならLong型、文字列を入れるならString型・・・のように。 Sub Sample47() Dim N As Long, buf As String N = 3 buf = "tanaka" End Sub ほかにも、変数にはオブジェクトを格納できる型というのがあります。たとえば、セルはRangeオブジェクトで表されます。このRangeオブジェクトを格納する変数は、次のようにします。 Sub Sample48() Dim R As Range Set R = Range("A1") R.Font.ColorIndex = 3 End Sub もちろん、ワークシートを格納できるWorksheet型とか、オートシェイプを格納できるShape型なども使えます。また、すべてのオブジェクトを格納できるObject型というのもありま

    fumokmm
    fumokmm 2018/05/16
  • Office TANAKA - Excel VBA Tips[他ブックのマクロを実行する]

    Excel 上で 2 つのブックを開いていたとします。ここでは仮に「Book1.xlsm」と「Book2.xlsm」としましょうか。 「Book1.xlsm」には『Sub Test1』というマクロがあり、「Book2.xlsm」には『Sub Test2』というマクロがあったとします。 ここで、Test1 から Test2 を実行しようと次のように書くとエラーになります。 Sub Test1() Call Test2 End Sub Book1.xlsm には Sub Test2 がありませんので、Sub プロシージャが見つかりません というエラーです。来のやり方は、Book1.xlsm から Book2.xlsm を参照設定すればよいのですが、これは面倒くさいです。 他ブックのプロシージャを実行するときは、Call メソッドではなく Run メソッドを使いましょう。 Sub Test1(

    fumokmm
    fumokmm 2018/05/10
  • Office TANAKA - VBAの実行時エラー

    主な実行時エラーです。気がついたら追加します。なお、エラーメッセージは、Excelの(というかVBAの)バージョンによって変わることがあります。

    fumokmm
    fumokmm 2018/05/07
  • Office TANAKA - セルの操作[文字色の設定]

    VBAが使えるようになるには、ある程度の知識を学ばなければなりません。オブジェクトの理解もそのひとつです。オブジェクトとは、対象となるモノという意味です。たとえば、セルA1はRange("A1")のようにRangeオブジェクトで表します。このRangeオブジェクトに対して、データを入力したり、罫線を引いたりすることになります。 さらに、オブジェクトは独立して存在するものばかりではなく、何らかのオブジェクトに含まれているものもあります。たとえば、セル(Rangeオブジェクト)は、ワークシート(Worksheetオブジェクト)に含まれています。どのワークシートにも属さないセルというのは存在しませんよね。同じようにワークシート(Worksheetオブジェクト)も、ブック(Workbookオブジェクト)に含まれるオブジェクトです。つまり、セルA1を正確に記述するのなら「Book1のSheet1のセ

    fumokmm
    fumokmm 2018/05/02
  • Office TANAKA - セルの操作[背景色の設定]

    セルの文字色を設定するには、FontオブジェクトのColorIndexプロパティかColorプロパティを使います。 Sub Sample1() Range("B2").Font.ColorIndex = 3 ''色パレットの3番を設定します Range("B3").Font.Color = RGB(0, 0, 255) ''青色に設定します End Sub セルの背景色(塗りつぶし色)を設定するには、Rangeオブジェクト配下のInteriorオブジェクトを操作します。 Sub Sample2() Range("B2").Interior.ColorIndex = 3 ''色パレットの3番を設定します Range("B3").Interior.Color = RGB(0, 0, 255) ''青色に設定します End Sub ColorIndexプロパティとは何か Colorプロパティとは

    fumokmm
    fumokmm 2018/05/02
  • Office TANAKA - Excel VBA関数[IsEmpty]

    構文 IsEmpty(expression) 引数expressionには、Empty値かどうかを判定するバリアント型の変数を指定します。 解説 引数expressionで指定したバリアント型変数がEmpty値である場合Trueを返します。Empty値でない場合はFalseを返します。 Empty値とはバリアント型変数に格納できる特殊な値で、バリアント型変数が初期化されていない状態を表します。Empty値は、数値では0と評価され、文字列としては長さ0の文字列と評価されます。 サンプル 次の例は、バリアント型変数がEmpty値かどうかを判定します。 Sub Sample() Dim a As Variant MsgBox IsEmpty(a) 'Trueを返します a = 123 MsgBox IsEmpty(a) 'Falseを返します End Sub

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

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

    fumokmm
    fumokmm 2018/04/25