エクセルで「もういくつ寝るとお正月」|エクセル雑感(2020年1月29日)
今日は2020年1月31日です。早いもので1月が終わろうとしています。つまり、2020年も12分の1がすでに終わろうとしています。この調子では、あっという間に今年(2020年)も終わってしまいそうです。
VBAの少数以下の演算誤差について|VBA技術解説(2020年1月29日)
ワークシートで時間計算をしていると、時に不可解な結果に見舞われることがあります。エクセルの時間は、1日を1とした数値で管理されているため、1時間は1の24分の1の数値になります。この少数以下の計算において、エクセルが正しく計算できないというものです。
VBAで写真の撮影日時や音楽動画の長さを取得する|VBA技術解説(2020年1月23日)
写真の撮影日時、音楽や動画の再生時間、これらをVBAで取得します。写真や音楽、動画をフォルダにまとめて入れている人は多いのではないでしょうか。しかし、なかなかちゃんと管理できていなかったりしませんか。
ツイッターで出されたVBAのお題をやってみた|エクセル雑感(2020年1月13日)
ツイッターで出題されたVBAの問題をやってみました。ツイッターのエクセルおよびVBA関係の人達の間では、いろいろと面白く勉強になる問題を出し合うという事が行われています。フォローして参加してみると楽しいと思いますよ。
イベントプロシージャーの共通化(Enter,Exit)|ユーザーフォーム入門(2020年1月13日)
ユーザーフォームのVBAでは、同じイベントプロシージャーを何個も作成することが多々あります。テキストボックスを複数個配置して同じイベント処理を実装する時、全く同じイベントプロシージャーをコピペで何個も作るといったことが必要になります。その解決方法として前回、第23回.イベントプロシージャーの共通化 WithEventを使った方法を紹介しましたが、
Rangeオブジェクトの論理演算(差集合と排他的論理和)|VBA技術解説(2020年1月10日)
複数のRangeオブジェクトの重なっている範囲や、結合した範囲等々、Rangeオブジェクトを集合として、その集合演算の結果のRangeオブジェクトが必要になってくる場合がVBAでは良くでてきます。VBAで標準でサポートされているものとしては、和集合:Unionメソッド 積集合:Intersectメソッド この二つがありますが、
イベントプロシージャーの共通化|ユーザーフォーム入門(2020年1月7日)
ユーザーフォームに部品コントロールを配置していくとき、同種のコントロールを繰り返し何個も配置することは良くあります。コピペしながらようやく配置し終わったと思ったら、今度はVBAで同じイベントプロシージャーを何個も作成しなければならなくなります。
コントロールの動的作成|ユーザーフォーム入門(2020年1月6日)
ユーザーフォームは、事前に画面デザインを考えて、それにそって部品コントロールを配置するものです。しかし、ユーザーの操作に応じて、動的に部品コントロールを変更したい場合があります。このような場合の対処方法としては、大きく以下の2通りの方法があります。
Evaluateメソッド(文字列の数式を実行します)|VBA技術解説(2020年1月5日)
Evaluateメソッドは、Excelで使用する名前をオブジェクトまたは値に変換します。簡単に説明すれば、セルに入れる数式を文字列としてVBAで実行できます。Evaluateメソッドの構文 式.Evaluate(name) 式には以下が指定できます。
エクスポート(PDF/XPS)|VBA入門(2020年1月2日)
シートの内容をPDF/XPS出力するには、VBAではExportAsFixedFormatメソッドを使用します。このメソッドが使える対象オブジェクトは複数あります、ブック、シート、セル、それぞれにExportAsFixedFormatメソッドが存在するので、印刷範囲によって使い分けてください。
外部ライブラリ(ActiveXオブジェクト)|VBA入門(2019年12月21日)
VBAには外部ライブラリ(ActiveXオブジェクト)を操作する事が出来る仕組みがあります。ActiveXオブジェクトとは、オートメーションをサポートするアプリケーションがオートメーションインターフェイスを通して他のアプリケーションに公開しているオブジェクトです。
Excel2003以前のアクセスキー一覧|VBAリファレンス(2019年12月17日)
Excel2007以降でもExcel2003以前のアクセスキー(アクセラレーションキー)を使用することができます。Excel2007以降のリボンへのアクセスキーとは別に、旧Excelのアクセスキーも引き続きサポートされています。アクセスキー(アクセラレーションキー)とは メニューの横に書かれているアルファベットを、
オブジェクト変数とは何か|VBA技術解説(2019年12月2日)
VBAを使い始めてからある程度進むとオブジェクト変数を必ず使い始めることになります。しかし、オブジェクト変数をどうやって使ったらよいのか、オブジェクト変数とはどういうものなのか… ここの理解で苦しんでいることが多々あるようです。VBA入門は現在137回までありますが、オブジェクト変数については第52回.オブジェクト変数とSetステートメントででてきます。
GetObject関数|VBA関数(2019年11月19日)
ActiveXコンポーネントから提供されたオブジェクトの参照を返します。ファイルパス(フルパスと名前)からオブジェクトの参照を作成したり、既に起動中のオブジェクトを取得する際に使用します。GetObject関数の構文 GetObject([pathname],[class]) pathname 省略可能。
ActiveXコントロール|VBA入門(2019年11月16日)
リボンの開発タブにコントロールの挿入があります。ActiveXコントロールをVBAで扱う場合の解説になります。ワークシートでActiveXコントロールを扱う事の是非はありそうですが、使用することで便利かつ見栄えの良いシートになる場合もあります。
フォームコントロール|VBA入門(2019年11月15日)
リボンの開発タブにコントロールの挿入があります。フォームコントロールをVBAで扱う場合の解説になります。ワークシートでフォームコントロールを扱う事の是非はありそうですが、使用することで便利かつ見栄えの良いシートになる場合もあります。
ジャンプの選択オプション(SpecialCells)|VBA入門(2019年11月14日)
数式の入っているセル、定数の入っているセル、条件付き書式の設定されているセル、これらをシート全体やセル範囲の中から一括で取得する方法がVBAにはあります。手動でのジャンプ機能のセル選択をVBAで使うことができます。VBAでは、RangeオブジェクトのSpecialCellsメソッドがこの機能に該当します。
CSVの読み込み方法(ジャグ配列)(改)|VBAサンプル集(2019年11月11日)
CSVのマクロVBAでの読込方法についての記事は、人気記事として多くのアクセスがあります。順次改定していくつかのバージョンが存在します。最新のジャグ配列(配列の配列)で読み込むVBAについて、UTF-8Nの文字コード判別の課題が残っていました。
VBAでのCSVの扱い方まとめ|VBAサンプル集(2019年11月9日)
マクロVBAでCSVの読み書きする方法はいくつもあり、当サイトでも複数のページでそれぞれVBAコードを掲載しています。順次記事を掲載しているので、それぞれどのような特徴があるかが良く分からなくなってしまっているようです。そこで、CSVに関するページをまとめておきました。
VBAにおける変数のメモリアドレスについて|VBA技術解説(2019年11月8日)
VBA開発においてメモリアドレスを気にすることはほとんど無いと思います。気になる場合があるとしたら、・String変数の処理が遅い ・Variant変数の処理が遅い ・ByRef,ByValの違い ・WindowsAPI使用時 このような場合に多少は気になる事があるくらいではないでしょうか。
空文字列の扱い方と処理速度について(””とvbNullString)|VBA技術解説(2019年11月7日)
空文字列と書きましたが、空文字列という表現がかなり曖昧な表現になっています。ここでいう空文字列とは、文字列が入るべき場所に、何も入っていない(ように見える)状態を指しています。VBAにおいては、空文字列の状態が2つあります。
Errオブジェクトとユーザー定義エラー|VBA入門(2019年11月5日)
VBA実行時には種々のエラーが発生します。実行時エラーに関する情報は、Errオブジェクトには入っていますので、VBA実行でエラー発生した場合は、Errオブジェクトを参照しエラー内容を調べることになります。Errオブジェクトの使い方と、ユーザー定義エラーの生成方法について解説します。
シングルクォートの削除とコピー(PrefixCharacter)|VBA技術解説(2019年11月4日)
セルに入力した先頭の’シングルクォーテーションは特殊なものとなっています。通常は、数値を文字としてセルに入れるときに使っているものです。マクロVBAでセル値を取得すると、この’シングルクォーテーションはValueでは取得できません。
ユーザー定義型の制限とクラスとの使い分け|VBA技術解説(2019年11月3日)
VBAにはユーザー定義型(Type)があり、複数の要素(複数のデータ型)を含むデータ型を定義できます。複数の値をひとまとめで扱う方法として配列がありますが、配列は同じ型の値しか扱うことができませんが、ユーザー定義型の変数には、文字列型、数値型等々の複数のデータ型をひとまとめにして入れることができます。
クリップボードに2次元配列を作成してシートに貼り付ける|VBA技術解説(2019年11月1日)
タイトルはいささかとっぴな感じですが、目的はクリップボードのデータ取得とクリップボードへデータを送る方法と、そもそもクリップボードの中に、セル範囲(つまり2次元)のデータがどのように入っているかを確認してみようという事です。そして、それが解ればクリップボードに2次元配列としてデータを用意してシートに貼り付けられるだろうという事です。
VBAクラスを使ったイベント作成(Event,RaiseEvent,WithEvents)|VBA技術解説(2019年10月31日)
VBAクラスを使う事で、ユーザー定義イベントを作成したり、動的にイベントを割り当てる事が出来ます。ユーザー独自のイベントを作成したり、フォームに動的に追加したコントロールにイベントを設定することができます。EventステートメントとRaiseEventステートメントを使う事で、ユーザー定義イベントつまりユーザー独自のイベントを作成できます。
VBAクラスのAttributeについて(既定メンバーとFor Each)|VBA技術解説(2019年10月19日)
VBAクラスをエクスポートすると各種のAttributeが設定されているのが確認できます。それぞれのAttributeの意味と、さらに追加で指定できるAttributeについて説明します。Attributeの変更はVBA標準でサポートされておらず、その使用については慎重であるべきですが、どのようなものがあるかを知るのは、
VBAの用語について:ステートメントとは|VBA技術解説(2019年10月16日)
プログラミング言語には独特の用語があります。用語の理解があやふやなままで解説を読んでも理解がずれてしまう事もあります。VBAの用語は、プログラミング言語一般で使われている用語と同じ使い方も多いのですが、中にはVBA独自の使い方をしている場合もあります。
VBAのマルチステートメント(複数のステートメントを同じ行に)|VBA技術解説(2019年10月14日)
VBAでは、基本的な決まりとして1ステートメントは1行で書くことになっています。しかし、あまりに長くなってしまうと見づらくなります。逆に、短いステートメントが多数行になっていても見づらい場合もあります。
VBAコードの全プロシージャー・プロパィ一覧を取得|VBAサンプル集(2019年10月12日)
VBAの開発規模がある程度大きくなってくると、VBAソース管理の必要性を感じることもあると思います。モジュールの数も増えてきて、プロシージャー・プロパティが膨大になっきます。以下は、指定ブックの全モジュールの全プロシージャー・プロパティを一覧にするVBAサンプルです。
VBAでエラー行位置(行番号)を取得できるErl関数|VBA技術解説(2019年10月11日)
VBAのデバッグでエラーが発生した行位置を特定する方法はいくつかあります。エラーが発生したVBAソースの行ラベルを取得することができる関数がErl関数です。Erl関数は、VB6に存在しVBAにも引き継がれ実装されているものです。
手動計算時の注意点と再計算方法|VBA技術解説(2019年10月9日)
セルを変更する度に再計算が動いてしまうと処理時間が遅くなってしまいます。そこでマクロVBAの中で、計算方法を手動にすることで対処することになります。このとき処理結果が期待した結果にならないといった事が起こらないように、手動計算時の注意点と再計算方法について解説します。
引数の数を可変にできるパラメーター配列(ParamArray)|VBA入門(2019年10月7日)
Subプロシージャー、Functionプロシージャーにおいて、引数リストの数を特定せず、不定個数の引数を渡せるよう可変にしたい場合があります。ワークシートの関数では、引数の個数が不定の関数が多数あります。=SUM(数値1,数値2,…) このように、最後が「,…」となっていて、いくつでも(限度はありますが)指定できる関数です。