和風スパゲティのレシピ

日本語でコーディングするExcelVBA

ロックされていないセルをすべて選択/クリアする

ロックされていないセルをすべて選択/クリアする方法を解説します。この手の操作に便利なSpecialCellsメソッドには残念ながら該当の機能がありませんので、For Eachステートメントで地道にLockedを判定して取得していきます。

セルのロックを設定/判定する-Range.Locked

セルのロックの設定/解除の方法と、セルがロックされているかを判定する方法を解説します。どちらもRangeオブジェクトのLockedプロパティで行うことができ、設定/解除はTrue/Falseの代入で、判定はTrue/Falseとの比較で実行します。

ブックを保護する - Workbook.Protect

ブックの保護を設定/解除する方法を解説します。WorkbookオブジェクトのProtectメソッドを使います。ブックの保護という名称ですが、実際に禁止される操作は、ワークシートの追加、表示/非表示、削除、移動、名前変更になります。

シートの保護設定を調べる/同じ設定でシートを保護する

ワークシートの保護設定の内容を調べる方法と、それを利用して同じ設定でシートを保護する方法を解説します。シート保護の各設定がONになっているかどうかを調べるには、WorksheetオブジェクトのProtectionプロパティを使用します。

シートを保護する - Worksheet.Protect

ワークシートの保護を設定/解除する方法を解説します。シートを保護するにはWorksheetのProtectメソッドを使用します。簡単ですが非常に引数が多いメソッドですので、よく扱う方は全引数を設定するコードを保存しておきましょう。

姉妹サイト「和風スパゲティのソース」を開設しました

ブログ3周年を記念して、ソースコード公開に特化した姉妹サイト「和風スパゲティのソース」を開設しました。「まどろっこしい解説いらない。ソースコードだけ見たい。」というときには、ぜひこちらのサイトをご活用ください。

ブックを保存せずに閉じる - Workbook.Close

ブックを保存せずに閉じるコードを解説します。Closeメソッドの引数SaveChangesをFalseに指定する方法、DisplayAlertsをOFFにしてから閉じる方法、保存済フラグ(Savedプロパティ)をTrueにしてから閉じる方法の3パターンがあります。

4/2(土)20:00~ VBA勉強会「脱初心者!メンテナンスしやすいマクロの作り方」

4月2日(土) 20:00~ Zoom勉強会に登壇します。「脱初心者!メンテナンスしやすいマクロの作り方」と題し、VBEの基本操作、シートの指定方法、変数(説明変数)、定数(Enum)をテーマに講演します。聞き専OKですのでお気軽にご参加ください。

Dictionaryで要素ごとのデータ数をカウントする

Dictionaryオブジェクトを使って、要素ごとのデータ数をカウントする方法を解説します。Excel上では、要素ごとのCOUNTIFや、ピボットテーブルで行う処理ですが、VBAの内部で行う場合は Dictionaryを使うと、簡単に書けて処理速度も高速です。

Dictionaryで重複のないリストを作る

Dictionaryオブジェクトを使って、重複のないリストを作成する方法を解説します。リストを処理するコードは、Dictionaryを使うと簡潔で処理速度も高速になります。Dictionaryの入り口としてもいい題材なので、ぜひ覚えていってください。

選択セルの値をGoogleで検索するマクロ

選択セルの値をググるマクロを紹介します。かなり便利なマクロで、社名⇒企業サイト、住所⇒GoogleMAPを開くことができ、データ内に出てくる専門用語を調べることもできます。ショートカットキーにセットしてぜひ使ってください。

1/29(土)20:00~ VBA勉強会「ライトニングトーク」

1/29(土)20:00~ Zoom勉強会に登壇します。今回はライトニングトークということで、りゅうりゅうさん・ひろさん・信金さん・私和風スパゲティの4名でスキル披露会を開催します。無言OK聞き専OKですのでお気軽にご参加ください。

簡単で便利なクラスを作って学ぶVBAクラスモジュール入門

VBAの学習に難敵として立ちはだかるのがクラスモジュールです。これは目的がわからないことが主な原因なのですが、クラスモジュールの目的はズバリ「コードの整理整頓」です。簡単で便利なクラスを作って勉強してみましょう。

明けましておめでとうございます

明けましておめでとうございます!2021年は、VBA勉強会「プロシージャ」や50日連続投稿をはじめ、大変お世話になりました。2022年も頑張って更新していきたいと思いますので、今年もどうぞよろしくお願いいたします。

プロシージャ[Sub/Function]の使い方入門

マクロを作るSubやFunctionを、正確にはSubプロシージャ/Functionプロシージャと呼びます。このプロシージャは「使いどころがわからない」と悩む人が多く、そんな方々へ向けて、プロシージャ分割の基礎と使いどころを解説いたします。

12/11(土)20:00~ VBA勉強会「Sub/Functionの使い方入門!」

12/11(土)20:00~ Zoom勉強会に登壇します。「Sub/Functionの使い方入門!」と題し、Functionを一度も使ったことがない方や、1マクロ1Subで作っている方向けの入門解説を行います。無言OK聞き専OKですのでお気軽にご参加ください。

ブログタイトル「和風スパゲティ」の由来

このブログを始めて2年が経過しました。いつもご愛読いただいている皆様ありがとうございます!節目くらいは雑談ということで、ブログ生誕記念に「和風スパゲティのレシピ」というブログタイトルの由来を書いておこうと思います。

50日連続投稿達成!良かったこと悪かったこと

この記事をもって、ブログの連続投稿が50日になりました。さすがに50日お付き合いいただいた方はいないと思いますが、3日でも4日でもお付き合いいただいた皆様ありがとうございます(´∀`)ここで区切りにして感想を書いておこうと思います。

Findは遅くて非表示に弱くてユーザー操作の影響を受ける

検索によく用いられるFindメソッドさんですが、実は危なくて遅い地雷メソッドです。非表示セルを見つけられない、ユーザーと設定を共有する、MATCH関数より十数倍レベルで遅い、の三重苦なので、なるべく使わないようにしましょう。

VBAでインクリメント演算子(++i)を使う方法

インクリメント演算子とは、i = i + 1 というコードを ++ i のように短縮表現するための演算子です。他言語経験者の方にはおなじみの書き方ですが、残念ながらVBAにはインクリメント演算子がありませんので、自作関数で代用しましょう。

ウィンドウ枠固定と印刷タイトルを同時設定するマクロ

シート最上部を常に表示する設定は、ディスプレイ用の「ウィンドウ枠の固定」と、印刷用の「印刷タイトル」の2つの設定があります。この2つの設定は同じ位置に設定することが多いので、同時設定するショートカットを作ってしまいましょう。

上下左右の印刷余白を0にするマクロ

上下左右の印刷余白を0にするマクロを紹介します。PageSetupオブジェクトに○○Marginというプロパティが6つあるので、それをすべて0にするだけです。マウスだと20回以上クリックが必要な作業をワンクリックにできるのはとても便利ですね。

プログラマ向けピアノ楽譜の読み方

このブログの記事数が150を突破しました。いつもご愛読いただきありがとうございます。50記事に1回くらいは雑談でも書こうかと思っていますが、別に節目でもないので普通に雑談を始めたいと思います。お暇な方はお付き合いください。

アクティブブックの保存フォルダを開くマクロ

現在のブックが保存されているフォルダを、エクスプローラーで開くマクロを紹介します。「今作業してるファイルと同じフォルダにあるファイルを開きたい」をワンクリックでやるためのマクロですね。Shell関数1行で簡単に実装できます。

マジックナンバーを減らす方法6選

マジックナンバーという用語をご存知でしょうか?Cells(R, 4) = Cells(R, 2) * Cells(R, 3)など、直接入力された数値を指す用語です。この3つの数値は、改修時の書き換えが面倒かつ危険でしかも読みづらいので、なくさなければいけない数字です。

指定のフォルダをエクスプローラーで開く

指定のフォルダをエクスプローラーで開く方法を紹介します。この処理は、Shell "C:\windows\explorer.exe " & フォルダパス & "\", vbNormalFocusで実装できます。局所的な使い方のコードですので、おまじないだと思って使って構いません。

個人用マクロブックの作り方と使い方3選

「いつでも使えるコード」を書くのに便利な個人用マクロブックの作り方・使い方を紹介します。「マクロをツールバーやショートカットキーにセット」「汎用関数集(ライブラリ)の保管場所」「コードテンプレート置き場」が3大活用法です。

Function名に句読点を使うとシート上で呼べなくなる

Functionプロシージャの名前に句読点を使用すると、ワークシート上でユーザー定義関数として呼び出せなくなります。読点「、」とカンマ「,」、句点「。」とピリオド「.」が自動変換されることが原因のように思えますが定かではありません。

Worksheet.Selectと.Activateの違い

Worksheetオブジェクトから呼び出す場合の、SelectメソッドとActivateメソッドの違いを説明します。どちらもアクティブシートを設定/変更できるメソッドですが、単独のシート選択はActivate、複数のシート選択はSelectがそれぞれ得意です。

すべてのシートをA1セル選択状態にするマクロ

すべてのシートをA1セル選択状態にするマクロを紹介します。For Eachで全シートをActivateし、Range("A1").Selectをして回るだけの簡単なコードですが、ウィンドウ枠の固定に対応する必要があるため、ActiveWindow.ScrollRow = 1も実行します。