VBAの勉強を始めてみた

色々試しています。

セルを縦方向に結合

エクセルの標準ボタンには「横方向に結合」がありますが、「縦方向に結合」はありません。どうしてないのかわかりませんが、個人的にその機能が欲しいので、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-3)

VBAの勉強を始めて、これまでに学んだことや、思いついたアレやコレをメモっておきます。 タイトルのとおりですが、コーディングしていると、入れ子になったループの中から一気に抜け出したい場面があります。しかし、下記のように、一番内側のループの中で …

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

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

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

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

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

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

リストを使用して新規フォルダを大量に作成する

今回はエクセルのリストを使用して、Windowsの新規フォルダを大量に作成してみようと思います。新規フォルダの作成には、MkDirステートメントを使用します。 MkDir Path:=新しく作成するフォルダ名 MkDirステートメントは引数に指定された文字列をフォルダ名…

VLOOKUP関数的にファイルリネームを行う

VLOOKUP関数的に、いわゆる「表引き」でファイル名のリネームを行うファイルリネームソフト(もどき)を作ってみました。 目次 概要 プログラムの流れ コード本体 引数なしのDir関数の振る舞い お好みで機能を変更する 概要 例えばこのように、とある商品の…

大量のシートから目的のシートを探して表示させる方法

エクセルを使って仕事をしていると、一つのブックにシートが多くなりすぎて、目的のシートを探すのに手間取ってしまうことがあります。自分で作った資料ならまだしも、余所から頂いた資料であればなおさらです。1秒を争うような場面で、目的のシートが中々…

複数シートを1シートにまとめる

今回のコードは前回作ったコードの出がらしリサイクルです。前回は複数ブックのデータを一つのブックのシートにまとめるというものでしたが、今回は複数ブックという部分が、複数シートに変わっただけです。 前回の記事を投稿して、1日経って、冷静になって…

現在アクティブなブックのシートに、複数ブックのデータを挿入貼り付けする

今回は、マクロを使い始めた人がまず最初にやってみそうなことを、やってみようかと思います。 やりたいことは単純に下記のようなこと。 a.xlsx、b.xlsx、c.xlsx、d.xlsx、・・・・・・z.xlsxのように行数が不定な複数ブックがあり、 これらのデータを、a.xlsxのデ…

n行おきに改ページさせる

選択範囲内でn行おきに改ページを挿入するマクロです。例えば、1000行に対して5行ずつ改ページを入れたいときに、200回も手動で改ページなんて入れてられません。なので、マクロで楽しちゃいましょう。 改ページを設定したい矩形範囲を選択し、 n値を指定し…

複数選択したシートのシート名を取得

選択されているシートのコレクションを返すことのできる、 ActiveWindow.SelectedSheets というプロパティがあることを初めて知ったので、備忘のために書いておきます。 ActiveSheet と異なるのは、ActiveSheetは単一のシートが対象になるのに対し、ActiveWi…

検索に一致したセルのみを選択する

選択範囲内で、該当する文字が入っているセルのみを選択する簡単なマクロです。セルを選択させたのち、セルの背景色を変えるまでをマクロにしてみようと思ったんですが、ふと思い直し、選択するのみにとどめてみました。 ためしに、選択範囲内で3の入ってい…

エクセル女学院に極秘潜入(雑記-14)

今回は、エクセル女学院と呼ばれる謎の学院に極秘潜入したので、その様子を報告いたします。 本校は、双子の妖精が通っていたり、アンドロイドが徘徊していたり、魔法使いが魔術を学んでいたりして、設定が破綻している。バラエティーに富んでいる。 名簿の…

自分の資質の低さと向き合うためには(雑記-13)

(前回の続き) もともと人の脳なんて不確実なものであり、それに加えて私は資質が足りない・・・・・・ので、徹底的にそれを補う方法を模索しなければなりません。(卑屈に聞こえてしまうかもしれないけれど、実際にそうなのでしょーがない) 私は、時々刻々と変…

プログラミングの魅力について稚拙ながら語ってみる(雑記-12)

VBA生命科学研究所 所員の好天です(*v.v)プログラミングを生業としていない者の視点から、プログラミングの魅力などについて、稚拙ながら語ってみたいと思います。私が感じている、プログラミングの魅力をいくつか書き出してみます。 意図通りに動いたとき、…

妖しい遊びを探して夜の街を徘徊(雑記-11)

18時00分パチンコで5万円勝つ。確変が終了し、終わったと思いきや、時短で引き戻しトータル12連チャンヽ(*´∇`)ノ回転の良い台だったのでもう少し打ちたかったが、このあと予定があるので換金してホールを出る。 18時30分予定とゆーのは、PRIMEというキャバク…

ブログ以外の趣味を探して街を散策(雑記-10)

AM10:00目が覚める。季節の変わり目で、疲れがたまっているのか10時間近く眠ってしまった・・・・・・。夜中の3時くらいに一度目が覚めた時は、まどろみに心地よさを感じたけど、今は寝すぎで体が重い・・・・・・。 今日は、ブログや読書以外の趣味を見つけるために、街…

罫線の有無で範囲選択を行う

Excelで、「Shift」+「Ctrl」を押しながら矢印キーを押せば、データの存在する最終行まで一気に選択することができます。が、下のようなデータの入っていない罫線のみの表で同じことをすると、 こんな感じで、Excelの最終行(1048576行など)まで突き抜けて…

データを指定文字で区切ってクリップボードへ転送する

複数選択したセルのデータを指定文字列で区切って連結し、クリップボードへ転送するマクロを作ってみました。Wordやメール、メモ帳など他のアプリケーションにコピペする際に便利です。 文章の中で、データとデータを区切るために使うのは:(コロン)、(読…

指定文字以外を半角にする

仕事で資料などを作っている時、複数のセルの文字列をマクロでまとめて半角にしたいなーって思うことがあります。StrConv関数を使えば簡単にできるのですが、すべて半角になると見易さが失われる場合もあるため、指定文字列以外を半角にするっていうマクロを…

三つ以上の部分一致条件で絞り込みを行う(オートフィルター不使用)

オートフィルターを使った絞り込みでは、引数に配列を指定しても、三つ以上の部分一致条件での絞り込みができませんでした。なので、オートフィルターを使わずに三つ以上の部分一致条件で絞り込みをさせてみたいと思います。まあ、検索に一致しない行を非表…

三つ以上の完全一致条件で絞り込みを行う(オートフィルター使用)

前回の「飛び飛びのセルからデータをコピーするマクロ」を使用し、コピーした複数データを検索条件(OR条件)として絞り込みを行うマクロを作成してみたいと思います。 目次 完全一致条件に使用する文字列を取り込む 取り込んだ完全一致条件を元に絞り込みを…

飛び飛びに選択したセルからデータをコピーし、飛び飛びに選択したセルに貼り付ける

For Each NextとDataObjectを利用した簡単なマクロを作ってみました。 目次 飛び飛びに選択したセルのデータをコピーし、飛び飛びに選択したセルに貼り付ける コードの説明 応用1:結合セルからデータをコピーし、単一セルにデータを貼り付ける 応用2:単…