mugaxのなんでも情報局

いろんな分野について発信していきます。

2022-07-01から1ヶ月間の記事一覧

VBAでゼロ埋めする方法から考えるプログラミングの魅力

仕事で使っているExcelマクロにゼロ埋めする処理があったのだが、その書き方が酷いものだったので記しておこう。 処理の内容は、数値を、4桁に満たない数値の場合はゼロ埋めして、4桁の文字列にするというものである。 'ゼロ埋めの悪い書き方 Dim disp As St…

不眠を治す簡単な方法

ここ1ヶ月くらい不眠に悩んでいた。ぐっすり眠れず、仕事を休むほどではないが、なんとなく体調が悪い日が多かった。 枕を替えたり、パジャマを替えたり、室温を調整したり、いろいろ試したが改善しなかった。 しかし、ある行為により、ぐっすり眠れるように…

VBAによるワークシートの指定方法は3つある

VBAでワークシートを指定する方法は3つある。 まず1つ目は、シートネームで指定する方法である。例えば、 ThisWorkbook.Worksheets("cial").Range("A1").Value = "aaa" これは"cial"という名前のシートのA1セルに"aaa"と記入するコードになる。 2つ目は、シ…

VBAでは、Option Explicit を必ず書こう

コードの先頭に Option Explicit を必ず書いておこう。これを書いておけば、変数の宣言が強制される。つまり、宣言していない変数は使えなくなる。 なぜ、変数の宣言を強制するべきなのかというと、もし宣言を強制していないと、スペルミスをしたときに新た…

VBAの実行時間を計測する方法

VBAで作ったマクロの実行時間を測る方法は簡単だ。 まず、Timer関数を使って開始時刻を取得する。 次に、同じくTimer関数を使って終了時刻を取得する。 終了時刻から開始時刻を引けば実行時間がわかる。 Dim start As Double Dim finish As Double start = T…

FizzBuzzで学ぶExcel VBA

はじめに FizzBuzzを題材にしてExcel VBAを学んでいきます。 FizzBuzzとは? 英語圏でよく遊ばれている言葉ゲームです。ひとりずつ順番に1から数字を言っていきます。ただし、3の倍数のときは、数字の代わりにFizz、5の倍数のときはBuzz、3の倍数かつ5の倍数…

Excel VBA練習問題 初級編001

問題 アルファベットと数字で構成された文字列がある。文字列に含まれる数字の和を返す関数 Function SumNumFromStr(tgt As String) As Longを作れ。(例)SumNumFromStr("aaa123") → 6SumNumFromStr("a1b3c5") → 9SumNumFromStr("ssss") → 0SumNumFromStr("") …

Excel VBAでフルパスからファイル名を取得する方法

セルに記入されたフルパスからファイル名のみを取得したい場合がある。 よくあるやり方は、InStrRev()とMid()を使う方法だ。 Function GetFileName(tgtPath As String) As String Dim pos As Long pos = InStrRev(tgtPath, "\") GetFileName = Mid(tgtPath, …

VBAでN桁の数字か簡単に判別する方法

商品のコード番号のようなものは桁数が決まっていることがほとんどだ。だから、ユーザーが入力したときに、全て数字であり、かつ、正しい桁数か自動的にチェックする機能はつけるべきだ。 このときにやりがちなのが、Len()とIsNumeric()で判別する方法だ。 …

Excelで一部のセルのみ編集を可能にする方法

変更不可のデータや数式が入っているのでシートを編集禁止にしたいが、入力欄など一部のセルについてだけ編集を可能にしたい場合があるだろう。 よくある誤りが、単純に[校閲]タブの[保護]グループにある[シートの保護]をONにしてしまう方法だ。この場合、全…