えくせるちゅんちゅん

ことりがエクセルをちゅんちゅんするブログ

VBA

VBAに関する記事すべて

WorksheetFunction.Transpose関数で起きる不具合全集

Excel VBAには WorksheetFunction.Transpose(セル範囲 または 配列) という 二次元配列を横に倒したり、縦に縦向けたりする便利な関数があります。 コーディングしていると様々な場面で行と列を入れ替えたい場面がやってきます。 ReDim Preserve で二次元配…

VBA開発時に「サブジェクトは指定された操作に対して信頼されていません。」が表示される原因と対策

VBA

最近Excel等のVBA開発画面において「サブジェクトは指定された操作に対して信頼されていません。」というエラーが発生するようになっています。 本書では、その原因と対応策について解説します。 再現方法 VBEにフォームモジュールを追加して、ツールボック…

VBAのSubはなぜサブなのか。Mainはどこにいったのか。プロジェクトの実行コマンドは何か

VBAでプログラムを組むとき、誰もが最初にSubプロシージャを書くところから始めると思います。 そのとき、なんでSubなのか。 サブということはメインもあるのか。 そんな疑問を感じた人もいるのではないでしょうか。 今回はそんな疑問について説明したいと思…

ADODB.Recordset活用のススメ

VBA

ADOは ActiveX Data Objectsの略で、Microsoftが提供するデータベースへアクセスのためのライブラリです。 今回はADOのRecordsetをデータベースを扱わないExcelでも使うと便利なときもあるよ話をします。 使用方法 使用するときは、 ADOは参照設定で「Micros…

VBAの実行時エラー「無効な前方参照か、コンパイルされていない種類への参照です。」の原因と研究記録

2023年12月から2024年1月にかけて、Excel VBAで実行時エラー「オートメーションエラーです。無効な前方参照か、コンパイルされていない種類への参照です。」が多発しているようです。 更に関係あるか不明ですがVBAプロジェクトが完全に読めなくなるという事…

VBAのApplication.WaitとSleepの違い

よく Excel VBA の Application.Wait と WindowsAPIの Sleep は何が違うんですか?という質問をされることがあります。これは、疑問に思うのは無理もありません。結果だけ見れば「待つ」という同じ機能に見えます。 しかし、両者は全く異なったアプローチに…

VBAでパブリックなコンパイラ定数を定義して条件付きコンパイル制御を行う

VBA

VBAには、環境に応じてプログラムの動きを変える「条件付きコンパイル」という仕組みがある。 この記事では、条件付きコンパイル(#Const / #If)とは何か説明し、その上で複数のモジュールで使用可能な独自のコンパイラ定数を定義しコンパイル制御(ソース…

なぜ個人用マクロブック(PERSONAL.XLSB)を使うのか

ExcelにはVBAで記述されたマクロを任意のブックで再利用するための常駐型のブックが存在し、これを「個人用マクロブック」あるいは「PERSONAL.XLSB」と呼ばれる。 この記事では、私がなぜ個人用マクロブックを使っているのか。どんなことに気をつけて使って…

ExcelVBAはどのようにプロシージャを分割すると良いのか(前編)

概要 私がVBAでプログラミングをするときは、プロシージャを3つの階層に分けて作るように意識している。 今回は私のプロシージャ分割の考え方を紹介する。 本記事では自分が説明しやすいようにプロシージャを次の2種類に分けて表記する。 マクロ・・・ユーザ…

VBAでリストボックスを上下するボタンを作成する方法

VBAのユーザーフォームに配置されたリストボックスのアイテムをボタンクリックで上下できるフォームを作成したので紹介する。 作ったもの リストボックスのアイテムは複数選択・2列表示できるようにする 【追加】を押したらテキストボックスの文字列をリスト…

VBAのユーザーフォームで十字キーを押すとチェックボックスやトグルボタンがONになる問題の解決策

今日はVBAの長年の疑問であった、十字キーを押すとチェックボックスやトグルボタンが押し下げ状態になる問題の解決策を発見したので記録に残す。 問題の再現方法 解決策 何故これが解決策になるのか 1.なぜテキストボックスの入力制限はKeyDownなのにチェッ…

VBAでFunctionとProperty Getを使い分ける理由

VBAの Function と Property Get は非常に似ています。 検索して出てくる説明では、両者を何故使い分けているのか、今ひとつシックリこない人が多いと思います。 そこで、私がなぜプロパティを使い分けているのか説明します。 プロパティとは Property Get …

WinAPIの64bit化で出てくるPtrSafe、LongLong、LongPtrってなんなのさ?

Office VBA の WinAPIを64bitに対応しようとした時に絶対に覚えなくてはならないのがLongPtrである。 Declare文の64bit対応に関しては以前次のような記事を書いたが、LongPtrの置き換えの考え方に関しては説明を省略していた。 今回は64bit対応のためにPtrSa…

VBAのクラスでNewと同時に引数付きコンストラクタを起動する代替案

VBAのクラスをNewと同時に引数付きコンストラクタを起動する方法を、思いつく限りの方法をまとめておく。

次元数がわからない配列変数の処理をシンプルにするVBA関数

今回は次元数の分からない配列に対して共通の処理系で全て処理できるようにするVBA関数を作ったので紹介する。

VBAのクラスの作り方1 - 進化するRECT

VBA

この記事は、ユーザー定義型のRECTが俺俺Rectangleクラスに進化していくまでの一連の流れを解説したものである。 メモリっぽいイメージ描いて頑張って説明しているが、「自身がなんとなく納得」するために描いたもので、正確なイメージではないので注意され…

ExcelVBAで確実にWorksheet.AutoFilterを取得する関数

今回はExcel VBAでAutoFilterオブジェクトを取得する方法について調査した結果を報告します。

VBAで多重ループから脱出する方法の全て

VBA

昨日、id:Infoment さんの「多重ループからの脱出」を読んで、たまに使っているテクニックを思い出したので、紹介するついでに思いつく限りの方法を整理してみた。 infoment.hatenablog.com はじめに 一般的によく見かける多重ループからの(純粋な)脱出方法…

書評 パーフェクト Excel VBAを読んで

半年以上前に入手したタカハシさん著の「パーフェクト Excel VBA」ですが、ようやく読み終わりましたので読書感想文を書かせていただきます。 パーフェクトExcel VBA (PERFECT SERIES)作者:高橋 宣成技術評論社Amazon

ExcelVBAでオートフィルタで絞り込んだデータの行数をカウントする

ExcelVBAでオートフィルタで絞り込んだ結果、表示されているデータの行数をカウントする方法について説明する。 要望 最適解 回答例 各行の表示状態を確認して非表示のものを数える オートフィルタの設定されたセル範囲のうち、可視セルだけ絞り込んでから行…

VBAクイズ プログラムの誤りを指摘せよ!

先日、Twitterにて #VBAクイズ を出題しました。このクイズの解答について解説していきます。

ExcelVBAでお賃金コストチェックアドインを作ってみた

朝起きてTwitterを見たら、「会議をするときは参加者の時給から会議コストを算出しなさい」という話が出ていたので、私もリアルタイムにコストを表示するツールを作ってみました。

文字列中の濁音を清音に変換するVBA汎用関数を作ってみた

GW1日目。今日は自作の文字列処理ライブラリに入っていた濁音を清音に変換する関数が、あまりにイケてないので書き直してみました。

ExcelにGoogle Spreadsheetを読み込むVBA汎用関数を作ってみた

今日はGoogle Spreadsheet(グーグルスプレッドシート:通称スプシ)に記載された表を、Excelに取り込むためのVBAを書いてみた。 きっかけ 作ったもの ソースコード 解説とか IsPlane=True(加工なしの場合どうなるか) 問題とか まとめ きっかけ 最近になっ…

VBAでよく使うCreateObjectや参照設定を整理してみた

VBAで使ったことのあるCreateObjectや参照設定を整理してみました。

VBAで快適にレジストリ操作ができるクラスを作ってみた

今回はVBAのレジストリ操作を快適にするクラスを作ってみたので紹介します。

Excelの入力規則のリスト選択を簡単にするアドインを作ってみた

今日はExcelの入力規則のリスト選択の使いづらさを改善するアドインを作ってみたので紹介します。

ExcelVBAのHyperlink.Addで表示文字が変わらない

日はHyperlink.Addで表示文字が思ったように表示されなくてハマったので、使い方を記録として残しておく。

Excel VBAにおける伝家の宝刀。Evaluateの使い方

今回はExcel VBAにおける伝家の宝刀。Application.Evaluateメソッドを紹介します。

VBAの参照設定は個人用マクロを使うと快適になるよ

VBAを使っていると「参照設定」をしなければならない場面が多々あります。 ネット上で拾ってきたコードをコピーして使ったら、それが参照設定が必要なコードで必要なライブラリを調べて、設定画面でライブラリを探し出してチェックを入れるのが億劫になって…

プライバシーポリシー