VBAの勉強を始めてみた

色々試しています。

EXCEL

SpecialCells(xlCellTypeVisible)メソッドのバグ?を回避する(Tips-16)

今回は、可視セルのみを取得するSpecialCells(xlCellTypeVisible)メソッド使用時のバグと、バクの回避方法について考えてみたいと思います。 VBA界では有名?なのかどうか分かりませんが、非表示の行または列がシート内に1以上ある状態で、単一セル対してSpe…

オートフィルタで絞り込んで印刷(を抽出条件の分だけ繰り返す)

今回はオートフィルタで絞り込んでから印刷する、という作業を自動化してみたいと思います。こんなイメージ。 この表の商品の列で、 "ポーション"で絞り込み 印刷 "金の針"で絞り込み 印刷 "フェニックスの尾"で絞り込み 印刷 "エリクサー"で絞り込み 印刷 …

指定文字列の左側または右側を切り出す

今回は指定文字列の左側または右側を切り出すコードを考えてみたいと思います。例えば、氏名から、スペースを境にして姓と名を切り出したい・・・・・・。とか。ただ、そんなのは既に世の中にある気がするので、そこから半歩進んだ処理も考えてみたいと思います。 …

ある行の高さや列幅を、他の行または列に適用する

エクセルを使用していると、行の高さや列の幅をコピーして他の行・列に適用したいときがあります。そんなときはどうすればいいでしょうか? 目次 形式を選択して貼り付けする方法 高さや幅を確認してから、他の行・列に設定する方法 マクロで適用する方法 形…

複数のセルの色でフィルタリングを行う

前回は複数の文字の色でしたが、今回は複数のセルの色でフィルタリングしてみましょう。内容は一部、前回と重複しますのでご了承ください。 kouten0430.hatenablog.com エクセルのオートフィルターはセルの色でフィルターをかけることができますが、色は一つ…

複数の文字の色でフィルタリングを行う

エクセルのオートフィルターは文字の色でフィルターをかけることができますが、色は一つしか指定できません。また、複数のセルを選んで右クリックし、「フィルター」→「選択したセルのフォント色でフィルター」をしようとしても、複数の選択範囲に対しては実…

同じデータのセルを結合する

今回は隣接するセルのデータが同じであれば、セル結合する。というコードを作ってみたいと思います。 しかし、 「セル結合はなるべく避けるべし」 「すぐにセル結合したがる民は滅んでほしい」 「最初からこの機能が無ければよかった」 と、いうような声もよ…

文字列中の数字に指定値を加減算する

今回は文字列の途中(もしくは先頭や末尾)に存在する数字に、指定値を加減算させてみたいと思います。んで、ついでに指定値でインクリメント・デクリメントなんかもさせたい。処理のイメージはこんなの。 欲を言えば、全角数字でも処理できるようにしたい。…

クイックアクセスツールバーのユーザー設定を特定のブックのみに登録する

今回は、クイックアクセスツールバーのボタンを特定のブックのみに登録する方法を紹介します。やり方はとても簡単。以下のとおりです。 ファイル-オプション-クイックアクセスツールバーを選択 クイックアクセスツールバーのユーザー設定を「すべてのドキ…

ビットマップ画像をセルの背景色で描画する

今回は、エクセルのシート上にセルの背景色を使ってビットマップ画像を描画してみようと思います。手作業で1セルずつちまちまと・・・・・・ではなくVBAで、です。何故、それをやろうと思ったのかは自分でも謎です。 では、やってみましょう! ビットマップファイ…

VBAでカタカナ(または数字・英字・記号)のみを全角(または半角)にする

今回はVBAを使って、エクセルに入力された文字列のうち、カタカナ(または数字・英字・記号)のみを全角(または半角)にしてみようと思います。これがどんな時に役立つかというと・・・・・・、カタカナや英字や数字や記号のみを半角全角にしたい時です(*`・ω・)…

Excel.officeUIを移植した際の「申し訳ございません。同じ名前のブックを同時に開くことはできません。」の対処法

先日、新しいPCを購入したので旧PCからExcel.officeUIと個人用マクロブックを移植しました。が、それに関連して発生したエラーについて原因と対処法をメモしておきます。 その前に、officeUIとはリボンやクイックアクセスツールバーのユーザー設定が記録…

閉じたままのブックからデータを転記するには?(Tips-12)

「VBAで、閉じたままのブックからデータを転記する方法は無いかにゃー」と思っている人のために、今回は ExecuteExcel4Macro メソッドを紹介します。 ExecuteExcel4Macro? それは何かの最先端技術ですか? いえ、違います。 新しいバージョンの Excel で、 …

Rangeの引数指定についておさらい(Tips-8)

久しぶりにコードを書くと、Rangeの引数で:(コロン)を使えば良いのか,(カンマ)を使えば良いのか迷ってしまう時があります(@_@;)なので、自分の脳内整理を試みようと思います。 Rangeの引数は Range(引数1,引数2) のように2つまで指定することができま…

非表示セルや結合セルを無かったことに・・・選択範囲を見たままコピペ

非表示セルや結合セルを含んだ範囲を普通にコピーし、他のセルへ値貼り付けしたら・・・・・・。 下のように、値が飛び飛びになってしまいます。 これを、マクロで飛び飛びにならないようにしてみましょう。 コードはこちらです。 Sub Tab改行区切りでクリップボー…

指定位置(セル)に瞬間移動する方法

エクセルで「列がAAAで行が30000のセルを、表示して下さい」と言われたら、何秒以内に表示できるでしょうか?私がやってみたところ・・・・・・A1セルを表示した状態から、通常のスクロールのみで1分以上かかりました。時間がかかることと、動く数字やアルファベッ…

ひっそりとExcel関数のおさらい(表の縦・横を入れ替える)

今回は、表の縦・横を簡単に入れ替える方法を紹介します。 目次 形式を選択して貼り付け(行列を入れ替える) TRANSPOSE関数を使用する 形式を選択して貼り付け(行列を入れ替える) これが一番手っ取り早く、簡単です。表をコピーし、貼り付けたい位置で、…

ひっそりとExcel関数のおさらい(乱数を発生させる)

今回は、エクセルで乱数を発生させる関数についてです。 目次 RAND関数(0以上、1未満の乱数を生成する) RANDBETWEEN関数(指定した範囲の整数の乱数を生成する) VBAで、RANDBETWEEN関数を使う RAND関数(0以上、1未満の乱数を生成する) =RAND()引数はあ…

ひっそりとExcel関数のおさらい(アラビア数字とローマ数字の相互変換)

アラビア数字をローマ数字に、ローマ数字をアラビア数字に変換する関数です。 ROMAN関数(アラビア数字をローマ数字に変換する) =ROMAN(数値)引数にアラビア数字の数値を指定します。 数値 返り値 1 I 2 II 3 III 4 IV 5 V 6 VI 7 VII 8 VIII 9 IX 10 X ARA…

ひっそりとExcel関数のおさらい(時間の切り上げ・切り捨て)

エクセルやVBAで、時間のデータを切り上げ・切り捨てするにはどうすればいいでしょうか?うーん・・・・・・。Round関数?DateAdd関数?通常の数値と違い、年・月・日・時・分・秒 をプログラム上でどう扱うか悩む人は少なからずいると思います。(私もその一人で…

セルを縦方向に結合

エクセルの標準ボタンには「横方向に結合」がありますが、「縦方向に結合」はありません。どうしてないのかわかりませんが、個人的にその機能が欲しいので、VBAで作ってみます。 ググればありそうだけど、簡単そうなので、自分でやってみます。 Sub 縦方…

日付データ(シリアル値)をお好みの表示形式で文字列に変換する

今回は、日付データを一括で文字列に変換する簡単なマクロを作ったので紹介します。 まず、日付データを文字列として扱いたいのはどんな場合か? について、軽く触れておきたいと思います。 このように、A列に日付データ、B列にコメントがあったとして これ…

プルダウンで選択すると、シート内の指定セルにジャンプするイベントプロシージャ

今回は、プルダウンメニューから選んだ文字列と同じ文字列を含む、同一シート内のセルにジャンプする(画面の一番上に表示させる)イベントプロシージャを紹介します。 プルダウンメニューから文字列を選ぶ度に、同じ文字列を含むセルを このように一番上に…

ループ処理を極力軽くする方法の模索~混乱編~(Tips-7)

VBAの勉強を始めて、これまでに学んだことや、思いついたアレやコレをメモっておきます。 今回は、ループ処理を使わなければならない場合に、ループの中に含まれる処理を極力軽くする方法について、模索してみようと思います。 下のように、1~9の数値がラン…

指定した数の行を一瞬で挿入するには?(Tips-6)

VBAの勉強を始めて、これまでに学んだことや、思いついたアレやコレをメモっておきます。 今回は、VBAで、ユーザーが指定した数の行を挿入する方法についてです。 まず、下のように、For ~Next を使って、指定した数の行を挿入させてみようと思います。アク…

空白以外のセルを一瞬でカウントするには?(Tips-5)

VBAの勉強を始めて、これまでに学んだことや、思いついたアレやコレをメモっておきます。 今回は、VBAで、セルにデータが有るか無いか(または特定のデータが有るか無いか、でもいい)を調べて、そのデータ数をカウントする方法についてです。 まず、下のよ…

InputBoxのキャンセル判定について(Tips-4)

VBAの勉強を始めて、これまでに学んだことや、思いついたアレやコレをメモっておきます。 今回は、InputBoxでキャンセルを押された場合の判定についてです。 InputBoxでキャンセルを押されたときに、何らかの処理(例えばプロシージャを終了するとか)をさせ…

可視セルのみを二次元配列に格納するには?(Tips-2)

VBAの勉強を始めて、これまでに習得したことや、思いついたアレやコレをメモっておきます。 結論から言うと、あらかじめ用意されているプロパティやメソッドなどで、可視セル範囲のみをうまいこと二次元配列に格納することはできないようです。(あくまでも…

結合セルを擬似的に単一セルのように扱うには?(Tips-1)

VBAの勉強を始めてみて、これまでに気づいたことや、習得したこまごました知識などをメモっておこうと思います。 下の画像のように、A1:C3を結合したセルがあります。 見た目は一つのセルのようですが、実際には9個のセル(A1,B1,C1,A2,B2,C2,A3,B3,C3)が含…

コピーしたときに自動的に入るTabを、それぞれ好きな文字に変えてクリップボードへ転送する

通常、エクセルで下図のようなデータ範囲をコピーし、メモ帳などに貼り付けるとこんな感じになると思います。 これは、Tabによってフィールドごとに区切られた状態でコピーされるからであり、逆に言えば、これを再度エクセルに貼り付けることも可能な訳です…