2025-05-01から1ヶ月間の記事一覧
文字コードから文字を取得する、Chr関数シリーズを解説します。Shift-JISコードから文字を取得するChr関数と、Unicodeコードから文字を取得するChrW関数があり、特にVBEに表示できない文字を扱う際に使用します。
対象文字の文字コードを取得するAsc関数を解説します。Asc関数はShift-JIS、AscW関数はUnicodeの文字コードを返します。VBEで表示できない文字をChrW関数で扱う際に、渡す文字コードを調べるのに利用します。
VBAのAsc関数と、シート関数のASC関数の違いを解説します。この2つはまったく違う関数で、VBAのAsc関数は文字コードを取得する関数、対してシート関数のASC関数は、全角文字を半角に変換する関数です。
文字列の前後のスペースを削除するTrim関数の使い方を解説します。Trim関数のほかにも左右だけ削除するLTrim/RTrim関数と、途中の複数スペースも1つにしてくれるシート関数のTRIMも使用することができます。
値を0~255の正の整数に変換するCByte関数を解説します。負の数や256以上の値を渡した場合はオーバーフロー、文字列を渡した場合は型が一致しませんエラーを返します。小数を渡した場合は銀行丸めを行います。
値をBoolean型に変換する、CBool関数を解説します。そもそも使用することはほとんどない関数なのですが、数値は「0はFalse、それ以外はすべてTrue」という挙動になっており、日付や数値文字列も含めて判定します。
Excelの新関数には便利なものがたくさんありますが、XLOOKUPは2021以降、TEXTAFTER/BEFOREは2024以降でないと#NAME?エラーになってしまいます。これを365ユーザー側で検知するためにリスト化するマクロを紹介します。
文字列型になっている数値をInteger型(整数型)に変換する、CInt関数について説明します。本関数はCLng関数の完全下位互換ですので、よほどのことがない限りは使用しないと思います。
文字列型になっている数値をLong型(長整数型)に変換する、CLng関数の使い方を解説します。数値型に変換する以外にも、Integer型のオーバーフロー問題への対応や、文字列型同士の足し算問題の対応でも使用します。
「スパゲティコード添削会」と称してVBA勉強会を開催します!今回は本ブログで出題したVBAの基本問題「領収書PDFを出力」を題材に、コード全体の設計などをリファクタリングしていきます。
「新社会人のためのExcelマクロ超入門講座ショートver」の配布資料と配信アーカイブを共有します。Excelマクロを活用してどんなことができるのかや、おすすめ勉強法などを紹介しました。復習にお役立てください。
VBAの組み込み関数である、CStr関数とStr関数の違いを解説します。どちらも値を文字列(String型)に変換する関数ですが、Str関数は少し特殊な仕様を持っている関数ですの、基本的にCStr関数を使っておけばOKです。
Str関数は数値を文字列(String)型に変換する関数とありますが、実際はBoolean型やDate型も文字列に変換します。正の値に半角スペースを入れるなど不要な挙動も多いので、文字列変換には素直にCStr関数を使いましょう。
数値などの値を文字列型に変換する、CStr関数の使い方を解説します。といってもVBAには暗黙の型変換機能があるため、文字列が必要な場面では自動で文字列に変換してくれます。使う場面は少ないかもしれません。
文字列中のアルファベットを大文字/小文字に変換するUCase / LCase関数を解説します。UCase/LCase(文字列)という構文で実行できます。全角アルファベットへも実行でき、その場合は全角で結果が返ります。
セルをRange変数に代入する時などに使う「Setステートメント」について解説します。実はSetはVBAさん向けのただの目印なので、単にRange.やWorksheet.など「"."が使える変数」にSetを使うと覚えておけばOKです。
VBAのモジュール名はプロパティウィンドウのオブジェクト名を入力することで変更できます。モジュールを並び替える機能はありませんので、モジュール名を「頭文字+数値+日本語」にして並び順を制御するのがおすすめです。
スペースを指定回数だけ繰り返した文字列を作りたいときは、Space関数を利用できます。n個のスペース=Space(n)というストレートな構文です。String(n, " ")でも同じことができるので、お好きな方をお使いください。
TypeName関数とVarType関数の違いを解説します。どちらも変数や値のデータ型を調べるための関数ですが、返り値のわかりやすさとオブジェクトの判定機能の分TypeName関数が完全上位といってよいです。
値が何型かどうかを調べる方法のひとつにVarType関数がありますが、「普通にデータ型を調べる分にはTypeNameの下位互換」な関数ですので、ただデータ型を調べたいだけならTypeName関数をご使用ください。
変数や値が何型の変数(As ○○)かを調べるにはTypeName関数を使用します。TypeName関数は何型で宣言されているかではなく、今なんの型が入っているかを判定してくれる上、NotingやEmptyの判定も可能です。
DictionaryはKeyからItemを取得するオブジェクトですが、逆にItemからKeyを取得する方法を解説します。といってもそんなプロパティはありませんので、自作関数を作ってゴリ押しするよりほかありません。
Dictionaryは中身の確認が難しい欠点があります。ローカルウィンドウでKeyは見れますがItemは見ることができません。この対策として「Dictionaryを新規シートに出力する」マクロを用意するのがおすすめです。
変数や配列の要素がオブジェクトかどうかを調べるIsObject関数を解説します。変数の型が決まっている場合は中身の有無にかかわらずその型に応じた結果となるため、実際はVariant変数の中身を判定する関数です。
Dictionaryの要素をシートに出力する方法を解説します。For Each文で1要素ずつセルへ出力していく方法と、要素を配列を介して一括でセル範囲に出力する方法の2つがあります。状況に応じて使い分けてください。
DictionaryのItemプロパティ、Keysメソッド、Addメソッドにはそれぞれ省略記法が存在します。各省略記法のメリット・使い方と、省略した場合に発生する可能性のあるエラーなど注意点について解説します。
文字列内に特定の文字列があるかを判定する方法を解説します。Instr関数とLike演算子を使う2つの方法があり、単純な判定ならInstr関数を使うのが簡単で、複雑な判定を行う場合はLike演算子の方が機能が多く便利です。
ファイル名から拡張子を取り出す方法を解説します。FileSystemObjectのGetExtensionNameメソッドを利用する方法と、InstrRev関数+Right/Mid関数を使用する方法の2種類があります。
現在開いているブックをコピーするには、FileSystemObjectのCopyFileを使用し、「FSO.CopyFile コピー元ファイルパス, コピー先ファイルパス」を実行します。この処理はFileCopyステートメントでは実行できません。
「新社会人のためのExcelマクロ超入門講座 ショートver」に講師として登壇いたします!Excelマクロを活用してどんなことができるのかを紹介する超入門講座です。Excel超入門講座も同時開催ですのでお気軽にご参加ください。