読者です 読者をやめる 読者になる 読者になる

アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

ある文字列について、特定文字以外が含まれている場合に取り除く関数

正規表現を使わない書き方。 例えば「ある文字列について、半角英数以外の文字を削除したい」という場合などに。 '* '* StrFilter '* ある文字列について、特定文字以外が含まれている場合に取り除く(もしくは置換する)関数 '* '* [in] sStr 対象文字列 '*…

ExcelVBA入門 #10:定数を定義することとそのメリット

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 はじめに 久しぶりの記事追加です。 今回は、地味ながらもプログラミング言語問わずの人気者、「定数」について。 定数って何? もしかしたら、中学か高校かの数学の時間に聞いたこと…

整数かどうか、またその範囲をチェックする関数

整数かどうかを一発チェックしてくれる関数を探していたのですが見つからず。 …えっ、本当にない…? いやあるでしょ…? しかし見つからなかったので、とりあえず作りました。誰か知ってたら教えてください。せっかくなので範囲チェックもやってくれるオマケ…

ブックを開くとき/閉じるときの処理

普通どおり標準モジュールにマクロを作るとき、プロシージャ名を 「Auto_Open」にすればブックを開いたとき、 「Auto_Close」にすれば閉じるときに そのプロシージャが起動します。「ブックを開いたら今日のおみくじを表示」みたいなお遊びから 「閉じる前に…

シートの存在を調べて存在しなければ新しいシートを作成

頻繁に使うロジックなので関数化してみました。 任意の名称を持つシートが存在するかどうか調べる 上記で存在しなければその名称で作成(もしくはあるシートをコピーしてその名称にする) ' 呼び出し例(1) Dim wsSheet As Worksheet Set wsSheet = SelectShe…

【ネタ】手作りソート

何やら「A1:A10に入力された数値データを昇順に並び変えてB1:B10に格納せよ」という学校の課題的なお題を頂いたので作ってみました。 もちろんソート機能は使用禁止です。 (つまり実務で使う意味は皆無のネタコードです) Option Explicit 'ソート範囲 Cons…

ブックの共有

共有フォルダ等に置いてあるファイルは他人が開いてると変更を保存できなかったりしますが、 それを誰が開いていようが同時に更新しようが大丈夫になるやつ。 実務ではテスト項目表・障害管理表などに使うと吉。 そういうのをExcelで管理する奴は殺せと言っ…

ワークシートの最大行数、最大列数を取得

最大行数は Rows.Count 最大列数は Columns.Count で取得できます。 ' 使用例(1):「Sheet1」シートの全セルのデータや書式設定を削除 With ThisWorkbook.Sheets("Sheet1") Range(Cells(1, 1), Cells(Rows.Count, Columns.Count)).Clear End With ' 使用例(2…

VBAでセルの結合

セルを結合するには、MeageCellsプロパティを用います。 ' A1~C3のセルを結合 Range("A1:C3").MergeCells = True '現在選択している範囲を結合 Selection.MergeCells = True ここで、結合したいセルのうち2つ以上にデータが入っていると、警告が表示されま…

Excelでよく使うショートカットキー

Excelのショートカットキーのうち、個人的によく使うものやすっかり忘れてたけどそういや便利だったわと思ったものをメモ。 自動入力系 ものすごく便利。 意外と知られていないのですがおすすめ。 「Ctrl」+「D」上のセルのコピー(クリップボード非使用) …

CSVを読み込み二次元配列に格納するプロシージャ・改

前にも同じようなのを作って使っていたんですが、 CSVにカンマや改行が含まれていると機能しないとかいうクソっぷりだったので、 大幅に改修しました。 あと、UTF-8のCSVに対応したい事案があったのでそれも合わせて。 (改修というか別物に近い) 参考:UTF…

駅メモのフレガチャ統計ツールをExcelで作る

honey8823.hateblo.jpここでフレンドガチャの出現率統計をなんとなく取ってみてるわけですが、 それに使っている手作りツール。見た目こんなの。「+」のところをクリックすると、対応した年月・アイテムのところが1増えます。 (もちろんそれに応じて割合と…

ランダム文字列を生成する関数

お仕事で 「8文字のランダム文字列をいっぱい生成する」 という作業があったのでExcelVBAでマクロ組んで片付けました。参考:VBAでランダムな文字列を生成する関数 - スイナシア http://suin.asia/2008/12/15/vba-random-letters.html…参考というか丸パクリ…

特定の行・列を折りたたみ可能にする(グループ化)

※操作方法はExcel2013で確認した内容です 途中計算の列を常時表示しているのは邪魔、だけど非表示にすると見直したいときにちょっと面倒… データをカテゴリごとにまとめているので、カテゴリごとに詳細を折りたたみ・展開できれば… そんなときに使えるのがグ…

現在日時を入力してアクティブセルを右に移動するマクロ

すんげープチネタですが。手動でExcelにちょっとした記録を取る時、 「日時 値1 値2 備考」 みたいな形式になることが多いです。日時は「Ctrl + ;」「Ctrl + :」で入力できますが、それすら省略したい場合は以下のマクロを仕込みます。 Sub insertDateTime()…

セルをリンクしたとき改行を反映させる方法

セルA1に改行を含む文字列があり、 セルB1に「=A1」と入力して同じ内容を表示させようとすると、 セルB1に表示された文字列は改行が反映されていないことがあります。その場合はB1の方を右クリックし、「書式設定>配置タブ」にて 「折り返して全体を表示す…

ExcelVBA入門 #9:パブリック?プライベート?プロシージャの使い方!

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 はじめに 今回は、最初から何の断りもなく使っていた 「Public Sub test()」~「End Sub」について。この二つで囲まれた部分を「プロシージャ」といいます。今までもしれっと例に出し…

ExcelVBA入門 #8:ググらずマニュアル見ずスピード解決する方法

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 はじめに 「こういうとき、どう書けばいいの?」となったとき。 ネットで調べれば大抵答えが出ます。 マニュアルや参考書を見てもよいでしょう。 しかし、ちょっとしたことでそれより…

ExcelVBA入門 #7:デバッグのコツ

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109今回から応用編です。 はじめに エラーが出たときや想定外の結果になったとき… サンプルのような数行のプログラムであれば、コードをよく見直せば間違いに気付くのも簡単です。 しかし…

今度こそ覚えるOffset

作るモノの仕様によっては絶対に覚えておいたら楽になるOffsetなのですが、いかんせん今までOffsetを使うような機会があまりなく たまに使うと毎回調べてしまっているのでいい加減理解しようとしてみました。 文法 Rangeオブジェクト.Offset(行方向の移動値,…

書式設定

Excelで各種データを扱う際、書式設定の方法を覚えておくと、データの記入そのものやVBAプログラミングが楽になることがあります。 また、入力した内容によってExcel側が勝手に書式設定するのを防ぐため、あらかじめ設定しておくべき、という場面も多々あり…

ExcelVBA入門 #6:ここまでの総集編

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 問題 今回は以下の仕様のものを作ります。できる人はそれ以降読まなくてOK。 (Excelワークシート関数は禁止) Sheet1に、「年」「月」「日」「金額」の4列がある 1行目はタイトル行…

ExcelVBA入門 #5:もし高校野球の女子マネージャーがドラッカーの『マネ

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 練習問題:これが分かる・できる人は以降読まなくても大丈夫 Ifを使った分岐処理が書ける(If, ElseIf, Else) Ifに用いる条件式について、複数条件の「かつ」「または」を使い分けて…

ExcelVBA入門 #4:エンドレスエイトに学ぶ繰り返し処理

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 練習問題:これが分かる・できる人は以降読まなくても大丈夫 Forを使った繰り返し処理が書ける 繰り返し回数に応じてセル位置や内容を変えた処理が書ける はじめに 今回も変数と同じ…

ExcelVBA入門 #3:プログラミングには必須!変数ってなんぞ?

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 練習問題:これが分かる・できる人は以降読まなくても大丈夫 変数が宣言できる 変数の型がなんとなくわかる 変数に値を代入したりそれを使ったりできる コード中にコメントが書ける …

変数と型

変数宣言の書き方 この記事では配列については扱っていません。ぐぐってください。 (いずれここでも書きたい)VBAでは、 Dim 変数名 As 型 という形で宣言を行います。 「As 型」は省略することも可能です。(後述しますが非推奨)例をいくつか挙げると、 D…

ExcelVBA入門 #2:Hello VBA World!!

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 練習問題:これが分かる・できる人は以降読まなくても大丈夫 特定のブックの特定のシートの特定のセルにメッセージを出力するプログラムが書ける はじめに というわけでHelloWorld後…

ExcelVBA入門 #1:Hello VBA World!

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 練習問題:これが分かる・できる人は以降読まなくても大丈夫 新しい標準モジュールを作れる モジュールの名前を変えることができる メッセージ表示のダイアログボックスを出すプログ…

ブックにパスワードをかける

PC内の整理がてら、登録しているWEBサービスの整理をしていました。 これが多い多い…。 パスワード管理ツールなんかもありますが、ネットに上げちゃうのは怖いので、 とりあえずログインIDとパスワードをとりあえずExcelで一覧に。 しかしこのファイルをその…

シートをコピーして名前を変更するプロシージャ

コピー元のワークシートとコピー後のシート名を指定して、シート複製・名前変更します。サンプルには記載していませんが、シート操作はエラーが起きやすいので、必要に応じてエラー処理などを入れた方がよいかもしれません。 '* '* シートをコピーする '* '*…

ThisWorkBookとActiveWorkBook

ThisWorkBookとActiveWorkBookの違いと使い分けについて。簡単に書くと、 ThisWorkbookはその処理が記述されているブック AcitveWorkbookは現在アクティブになっているブック です。例えばブックを2つ開き(ブックA、ブックB)、 ブックAに Range("A1") = "hog…

ExcelVBA入門 #0:やってみよう!VBAマクロ

シリーズもくじはこちら ExcelVBA入門 もくじ - アナログCPU:5108843109 練習問題:これが分かる・できる人は以降読まなくても大丈夫 Excelを開く ExcelVBEを開く 変数宣言を強制する設定にできる はじめに 「この単純作業、マクロでなんとかなるんじゃない…

CSVを読み込み二次元配列に格納するプロシージャ

CSVファイルを読み込み、その内容を二次元配列に格納して返すプロシージャ。 <2016-09-06 追記> この記事のコードは「レコード中にカンマや改行が含まれていない、Shift-JIS固定」という前提で作られています。 以下に改良版を置きましたので、必要に応じ…