VBAの勉強を始めてみた

色々試しています。

CPUよもやま話(機械語の正体)

前回は、マルチプレクサに繋がる7つの配線を、4ビットのオペコードとフラグでどうやって操るの?ってところで終わりました。 この?の部分には、任意のオペコードとフラグが入力されれば、それを解読して必要な信号を出力する装置を入れる必要があります。…

CPUよもやま話(マルチプレクサで転送先と転送元を切り替える)

前回までの記事に登場したモノをすべて繋いでCPUの形にしていきたいと思います。しかし「レジスタとクロック」の回でも書いたように、ただ単純に繋ぐだけでは回路が固定であり、処理内容が永遠に同じものになってしまいます。命令によって回路を切り替え…

CPUよもやま話(プログラムカウンタのお仕事)

今回は、プログラムカウンタが動作する様子を見てみましょう。プログラムカウンタのお仕事は、実行すべきプログラムが格納されているメモリアドレスを指し示すことです。もう少し具体的にいうと、プログラムの開始位置となるアドレスから始まり、クロックに…

CPUよもやま話(レジスタとクロック)

前回までに「レジスタ」という単語が何回か出てきましたが、レジスタが何者なのかについてはほとんど書いていなかったので、ここらで書いておこうと思います。 なぜCPUの中にレジスタが必要なのか? CPUの中にはデータを一旦保持するためのレジスタが…

CPUよもやま話(アセンブリ言語で命令のイメージを掴もう)

今回は、CPUに対しての命令がどのように行われるのか見てみましょう。 アセンブリ言語とは? 皆さんご存知のとおりコンピューターの中で情報は、0と1で表されます。0と1で表現されたプログラムは機械語と呼ばれます。しかし、命令の内容が0と1の羅…

CPUよもやま話(情報を書き込む・記憶する・読み出す)

今回は、情報がどのようにして記憶(メモリー)されているのかを調べてみたいと思います。皆さんご存知のとおりコンピューターの中で情報は、0と1で表されます。コンピューターは電気回路なので、電圧が低い状態を0、電圧が高い状態を1としています(回…

CPUよもやま話(論理ゲートを使って加算器を作ってみよう)

前回はトランジスタを利用した基本的な論理ゲートであるAND、OR、NOTの作り方を紹介しました。今回は、その論理ゲートをさらに組み合わせて加算器なるものを作ってみましょう。専門家の方には初歩的過ぎるかもしれませんが、そのあたりはご容赦下さ…

CPUよもやま話(トランジスタと論理回路)

どんな高水準プログラミング言語で書かれたプログラムであっても最終的には機械語に変換され、電気信号となってCPUで処理されます。CPUの中ではレジスタやALUなどが電気信号を処理しますが、じゃあレジスタやALUはそもそも何で構成されているんでしょ…

Option Compare Text でマッチする文字列を全部調べてみた(Tips-15)

今回は以下の記事の続きです。 kouten0430.hatenablog.com Option Compare Textを宣言して文字列比較を行った場合、文字コードが同じもの以外にどんな文字列が類縁の文字としてマッチするのか・・・・・・。前回は比較サンプルが少なく不十分だったので、今回は文…

オブジェクトはメモリの中でどうなってるの?(Tips-14)

注:今回のお話は VBA にそっくりそのまま適用できるかわかりません。一般的なお話として読んでいただければ嬉しいです。 前回、メモリ内部を「オブジェクト」とだけ表現しました。せっかくなのでメモリ内部をもう少し拡大して観察したいと思います。 メモリ…

クラスを実体化するってどういうこと?(Tips-13)

クラスを実体化することの比喩として、「たい焼きの型」と「たい焼き」の話がしばしば用いられます。しかしこの比喩で「なるほど!そうだったのか」と一発で理解できる人は何人いるのでしょうか?回り道をし、色々な角度から考えを巡らせて理解に至った人が…

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

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

語彙的意味に基づく文字列比較とは?(Tips-11)

VBAでは文字列データの比較方法を以下の Option Compare ステートメントで宣言することができます。 Option Compare Binary(又は省略) 各文字列の文字コード数値が比較されます。 Option Compare Text システムのロケールによって決定され、語彙的意味に基…

Like演算子でのパターンマッチングについて(Tips-10)

VBA ではRegExpクラスを利用すれば正規表現を使用することができます。が、そこまでしなくとも Like演算子を使って正規表現のようなパターンマッチングをすることもできます。 覚えることが少ないので初心者にはオススメですし、組み合わせ次第ではそれなり…

Word Rangeの引数指定について(Tips-9)

今回は Word の Range についてです。 名前が同じで用途も似ていますが、Excelの Range とはプログラム上まったくの別物です。 Range の引数はクイックヒントに表示されるように Start:開始文字位置End:終了文字位置 で指定します。 下のサンプルで実際に…

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

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

旧大阪万博を知らない私が2025年大阪万博を勝手に想像してみる(雑記-20)

私は旧大阪万博をあまり知りませんが、世間では2025年の万博が大阪に決定したニュースで盛り上がっているようなので、大胆にも2025年大阪万博を勝手に想像してみます。(; ・`ω・´) シンボルは月の井戸 大阪万博のシンボルと言えば、岡本太郎氏の「太陽の塔」…

相手の言いたいことが先にわかって人付き合いがツラい(雑記-19)

私は「相手の言いたいことが先にわかる」ことがよくあります。 ということもあって、会話の中で初めて聞いたように驚いたり笑ったりすることが素直にできないので・・・・・・ 周りからはつまらない人間に見えているだろうと思います。 試しに、わざと驚いたり、笑…

「効率の良さ」という価値に対してもっと具体的な対価がほしい(雑記-18)

効率良く仕事をこなす人っていうのは周りに評価されにくい場合があります。例えば同じ仕事を Aさんは、周囲の助言がなくても半日でこなせる Bさんは、周囲に知恵を借りまくり、さらに残業し、3日間かけてこなす 出来上がった成果が同じであれば、単純にAさん…

Windows1.0で遊んでみた(雑記-17)

ブラウザ上で Windows1.0 が動作するエミュレーターがあるようなので遊んでみます! ↓こちら「Virtual x86」というページ http://copy.sh/v86/ 上記にアクセスするとエミュレート可能な OS の一覧が表示されます。 Windows1.0の他に Windows95、Windows98、F…

使うほど時短になる! 愛用フリーソフトを晒すだけの巻(雑記-16)

今回は下記のようなPC操作を楽チンにしてくれるフリーソフトを3つ紹介します。 別ウィンドウの必要な箇所を見ながらアクティブウィンドウで作業する 最近コピーした文章や定型文を再利用(ペースト)する 目的のフォルダに簡単にアクセスする 似たような…

電気の雑学 ブラックアウト・ブラックスタートについて分かりやすく説明する試み(雑記-15)

今回は VBA とはまったく関係ありません。書くことも無くなってきた たまには違うことも書いてみましょう。 2018年9月6日に起こった、北海道胆振地方の地震および全域停電はまだ記憶に新しいところです。被災された方、停電で日常生活が困難になった方はとて…

Word 左からの文字数指定で置換する

前回は段落の両端に対しての処理でしたが、今回は段落の内側にアプローチしてみたいと思います。ということで、左からの文字数指定で各段落の内側を置換するマクロを作ってみました。 前回と同じように任意の範囲を選択します。仮に左から5文字目を置換開始…

Word 選択範囲の段落の先頭または末尾に指定文字を挿入する

文書の各段落の先頭や末尾に文字をまとめて追加したい場面ってありませんか?「俺(私)にそんな場面はないっ!」って方には、ここから下の記事は無用の長物です。他の場所に GoTo して下さい。 ということで、今回は選択範囲内にある各段落(の先頭または末…

Word 開いている全文書の同じ行にクリップボードのデータを貼り付ける

今回は Word で開いているすべての文書の同じ行(厳密にいうと段落※)にクリップボードのデータを貼り付けさせてみたいと思います。 イメージとしてはこんな感じ。 マクロ実行時にアクティブな文書(最前面にある文書)のカーソル位置を読み取り、すべての文…

Word 非連続な位置にクリップボードのデータを貼り付ける

タイトルの通り、今回は Word の文書で非連続な位置にクリップボードのデータを貼り付けるということをやってみようと思います。 と、いっても非連続な位置に対してどうやってマクロで処理するのか・・・・・・。少し考えた結果、以下のようにやってみることにしま…

Word 標準テンプレート(Normal.dotm)にVBAのコードを記述してマクロを使用するには

今回は Word で VBEを起動する方法 標準モジュールにコードを記述する方法 マクロを実行する方法 を順番に説明したいと思います。この辺は Excel とほとんど同じなので安心して下さい。 Word のデフォルトでは VBE を起動するためのボタンが非表示になってい…

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

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

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

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

VBAでIEを操る(フレームについて)

今回は、フレームについてです。社内システムでは未だに使われていたりするので、いちおう書いときましょう。 フレームとは? 複数個に分割した画面に、それぞれ別のページを表示する機能です。下の例では、3つのHTMLファイルが用意されます。 ・構成.html(…