VBAの勉強を始めてみた

タイトルの通りVBAの勉強を始めました。若干の発達障害があり、読みづらく分かりづらい点が多々あるかもしれませんが、ご了承下さい。

数字を計算可能な数値に変換する

ここに外部アプリケーションが出力したEXCELファイルがあります。 SUM関数で数値を合計をしようとしたのですが、画像のように計算結果が「0」になってしまいました・・・・・・。 結論からいうとこれはセル内にカンマが存在し文字列扱いとなっているためです。書式…

数式を相対参照にする

今回は絶対参照になっている数式を相対参照にします。数式内のセル参照を絶対参照⇔相対参照に変更するには・・・・・・数式内の変更したい部分にカーソルを合わせてF4キーを押せば、以下のように順番に切り替わっていきます。 行列とも絶対参照→行のみ絶対参照→列…

数式を列のみ絶対参照にする

数式内のセル参照を絶対参照に変更するには・・・・・・数式内の変更したい部分にカーソルを合わせてF4キーを押せば、以下のように順番に切り替わっていきます。 行列とも絶対参照→行のみ絶対参照→列のみ絶対参照→行列とも相対参照(に戻る) でも、変更したい数式…

数式を行のみ絶対参照にする

数式内のセル参照を絶対参照に変更するには・・・・・・数式内の変更したい部分にカーソルを合わせてF4キーを押せば、以下のように順番に切り替わっていきます。 行列とも絶対参照→行のみ絶対参照→列のみ絶対参照→行列とも相対参照(に戻る) でも、変更したい数式…

数式を絶対参照にする

数式内のセル参照を絶対参照に変更するには・・・・・・絶対参照にしたい部分にカーソルを合わせてF4キーを押せば、下記のように順番に切り替わっていきます。 行列とも絶対参照 行のみ絶対参照 列のみ絶対参照 行列とも相対参照(に戻る) でも、変更したい数式が…

標準モジュールにVBAのコードを貼り付けてマクロを使用するには

当ブログを含め、ネット上にはあまたのVBAコードが記載されたWebページが存在します。そこで見つけたお気に入りのマクロをコピー&ペーストし、自分のパソコン(EXCEL)で使用するには、どうすればいいのか?今回はVBEの起動から、標準モジュールへのコード…

右からn文字目の前に改行を入れる

右から数えてn文字目の前に改行を入れます。対象となるセルを選択した状態でマクロを実行して下さい。 試しに「5」を指定します。 右から数えて5文字目の前に改行が入りました。 複数のセルの特定の位置に改行を入れたいけど、対象となるセルが多すぎて一つ…

左からn文字目の後ろに改行を入れる

左から数えてn文字目の後ろに改行を入れます。対象となるセルを選択した状態でマクロを実行して下さい。 試しに「5」を指定してみます。 左から数えて5文字目の後ろに改行が入りました。 複数のセルの特定の位置に改行を入れたいけど、対象となるセルが多す…

小数第n位以下を四捨五入する

小数点n位以下を四捨五入したいセルを選択して、マクロを実行します。 InputBoxに四捨五入したい小数点以下の桁数を指定します。例えば、小数第三位以下を四捨五入する場合は「3」を入力します。 これで小数第三位以下が四捨五入され、小数第二位までの数値…

文字の冒頭に指定した文字を追加する

セルにあらかじめ入っている文字列(文字列以外でも可)の冒頭に、InputBoxで指定した文字を追加します。 実行前 実行後 選択したセル範囲(可視セルのみ)に対し、For Each Nextで下記の処理を行います。 オブジェクト.Value = 変数(InputBoxで入力された…

文字の末尾に指定した文字を追加する

セルにあらかじめ入っている文字列(文字列以外でも可)の末尾に、InputBoxで指定し た文字を追加します。 実行前 実行後 選択したセル範囲(可視セルのみ)に対し、For Each Nextで下記の処理を行います。 オブジェクト.Value = オブジェクト.Value & 変数…

表をオリジナルの順番で並び替える

Sheet1に人口順に並んだ、47都道府県の表があります。この表を北から順番(北海道→青森→岩手・・・のように)に並べ替えるにはどうしたらいいでしょうか?EXCELの標準機能では昇順・降順、あいうえお順、日付順、曜日順等で並べ替えることはできますが、人間の…

選択範囲のデータをカンマ区切りでクリップボードに格納する

選択したセル(複数選択可)の文字列を、カンマ区切りでクリップボードに格納します。選択したセルが結合セルでも、余分なTabや改行を含まず単一セルと同じような扱いでクリップボードに格納できます。次回掲載予定のマクロと組み合わせて使用するためのもの…

ピボットテーブル用の元データに年度・四半期・月フィールドを作成する

ピボットテーブルを使用すると、大量のデータを様々な角度から集計できて便利なのですが・・・・・・、ピボットテーブルには何故か「年度」というグループ分け機能が搭載されていないため、年度ごとに集計を行う場合には非常に不便です。 例えば、集計や累計などは…

マクロをクイックアクセスツールバーに登録する

今回はマクロをクイックアクセスツールバーに登録してみたいと思います。クイックアクセスツールバーを編集するには・・・・・・ リボンのタブ内で右クリックし「クイックアクセスツールバーのユーザー設定」を選択します。(ファイル-オプション-クイックアクセ…

マクロをリボンに登録する

今回はマクロをリボンに登録してみたいと思います。リボンを編集するには・・・・・・ リボンのタブ内のどこでもいいので右クリックして「リボンのユーザー設定」をクリックします。(ファイル-オプション-リボンのユーザー設定からでも同じように入れます) リ…

クリップボードのデータを結合セルへ貼り付ける

通常、クリップボードのデータを結合セルに貼り付けようとすると・・・・・・ このように、「この操作は結合したセルには行えません」等のエラーメッセージが表示され、貼り付けることができません。 そのようなモヤモヤを解消し、ストレスなく仕事を行うために今…

左からn文字目の文字を置換する

左から数えて、n文字目からx文字分を、指定した文字列に置換するマクロを作ってみました。 例えば、下の画像では4文字目から3文字分を顔文字に置換してみます。 文字ではなく空白を指定した場合は、4文字目から3文字分が削除されます。 4文字目から0文字分と…

結合セルのデータを単一セルのデータと同じようにクリップボードに格納する

下の画像のような結合セルをコピーしてメモ帳などに貼り付けると・・・ このように、意図しない改行やTabがクリップボードに格納されていることが分かります。これは、結合セルが複数セルで構成されているからであり、画像の例であれば一つの結合セルに9個の…

余分な空白を削除する

Trim関数を使って、セル内の文字列の前後にある空白を一括で削除します(意図的に入れた空白も削除するので注意)。文字列と文字列の間にある空白は削除しません。使用方法としては余分な空白を削除したいセルを選択(複数選択可)した状態でマクロを実行し…

選択範囲の金額を千円単位にする(四捨五入版)

タイトルのとおり選択範囲の金額を千円単位に変換し、小数点以下を四捨五入します。ちなみに、下記のコードでは小数点以下を四捨五入ますが、小数点以下を切り上げたり切り捨てしたい場合もあると思いますのでそっちのバージョンも作ってみました。コード後…

選択範囲の金額を千円単位にする(切り捨て版)

タイトルのとおり選択範囲の金額を千円単位に変換し、小数点以下を切り捨てします。ちなみに、下記のコードでは小数点以下を切り捨てますが、小数点以下を切り上げたり四捨五入したい場合もあると思いますのでそっちのバージョンも作ってみました。コード後…

選択範囲の金額を千円単位にする(切り上げ版)

タイトルのとおり選択範囲の金額を千円単位に変換し、小数点以下を切り上げします。以前に掲載した内容と重複しますが前回のコードでは下の画像のような飛び飛びのセル選択に対して正しく処理ができなかったためFor Each Nextでコードを書き直しました。 前…

指定した文字のみ色を変える

ある特定の文字のみ色を変えるマクロです。たとえば下のような「松島」という文字のみ色を変えたい場合に・・・・・・ 色を変更したい文字が入ったセル範囲を選択した状態で、マクロを実行して下さい。 ちなみに、非表示やフィルタリングによって折りたたまれたセ…

コマンドバーのリスト表示

以下はコマンドバー(コマンドバーコントロールの上位階層にあたるもの)の一覧をリスト表示するコードです。マイクロソフトのヘルプページにあるものです(使い勝手のいいよう少し改良しました)。 ***************************…

コマンドバーコントロール(Cell)のリスト表示

右クリック時のショートカットメニューにマクロを登録する際、上から何番目にメニューを配置するか指定できますが、EXCELの標準で隠されたメニューなどがあるため、正しい順番が分からないことがあります。その際には下記のマクロで右クリック(Cell用)ショ…

右クリックショートカットメニューにマクロを登録

こんな感じで、右クリックした時のショートカットメニューにマクロを登録できたらいいなと思ったので、下記のようなマクロを作ってみました。対話形式で好きなマクロを右クリックのショートカットメニューに登録することができます。失敗してもリセットし、…

指定した数の列を挿入する (軽負荷版)

現在の列(セル単体の選択、または通常の挿入のように列全体を選択してもよし)の左方向に指定した数の列を挿入します。 挿入方向と書式の引継ぎはEXCELで通常挿入した場合と同じです。 列数を自分で数える手間がないぶん少しだけ楽です。 ********…

指定した数の行を挿入する (軽負荷版)

前回投稿した後、CPUに負荷をかけない方法に気がついたので、再度仕切り直します(;^_^A ※負荷のかかるFor ~Nextをやめました 現在の行(セル単体の選択、または通常の挿入のように行全体を選択してもよし)の上方向に指定した数の行を挿入します。 挿入方向…

指定した数の行を挿入する

簡単なマクロを作ってみました。 現在の行(セル単体の選択、または通常の挿入のように行全体を選択してもよし)の上方向に指定した数の行を挿入します。 挿入方向と書式の引継ぎはEXCELで通常挿入した場合と同じです。 行数を自分で数える手間がないぶん少…

クリップボードのデータを可視セルのみに貼り付ける

以前書いた内容と重複しますが、だるまさんという方が作られた 素晴らしいマクロがありますので紹介をさせていただきます。 だるまのつぶやき---エクセルVBA小技集 可視セルのみに貼り付けを行うというものです。 このマクロに自分好みの機能(選択中のセル…

選択範囲の文字を全角にする

For Each Nextでいろいろ作ってみた その5 選択範囲の文字を全角にするマクロです。セルの値が数字の場合は半角から全角に変換しても、EXCELが数値と判断して半角に戻してしまうため、頭に’(シングルクォート)を付けて強制的に文字列にしています。 **…

選択範囲の文字を半角にする

For Each Nextでいろいろ作ってみた その4 選択範囲の文字を半角にするマクロです。 *************************************** Sub 選択範囲の文字を半角にする() Dim myRange As Range For Each myRange In Select…

選択範囲のアルファベットの先頭文字を大文字にする

For Each Nextでいろいろ作ってみた その3 選択範囲のアルファベットの先頭文字を大文字にするマクロです。 *************************************** Sub 選択範囲のアルファベットの先頭文字を大文字にする() Dim…

選択範囲のアルファベットを小文字にする

For Each Nextでいろいろ作ってみた その2 選択範囲のアルファベットを小文字にするマクロです。 *************************************** Sub 選択範囲のアルファベットを小文字にする() Dim myRange As Range Fo…

選択範囲のアルファベットを大文字にする

さて、せっかくFor Each Next文を勉強したので、いろいろ作ってみたいと思います。 選択範囲のアルファベットを大文字に変換するマクロです。 *************************************** Sub 選択範囲のアルファベッ…

For Each Next文について

今回は、For Each Next文について勉強してみます。 実はこれ、自分の中であまり理解できていないステートメントです・・・。For Each Nextとは何を繰り返すのか? For Each オブジェクト変数 In コレクション 処理 Next オブジェクト変数 In コレクションの…

個人用マクロブックの削除

さて、前回、個人用マクロブックを作成した訳ですが・・・。個人用マクロブックとは何処に保存されてるんじゃい! ということで調べてみます。 個人用マクロブックとは、実体はPERSONAL.xlsbというバイナリ形式で保存されたブックで \Users\ユーザー名\AppDa…

個人用マクロブックの作成

マクロは通常、ブックごとに保存されます。・・・ですが、複数のブックで共通して使用するマクロは「個人用マクロブック」に保存しておくと便利です。 この個人用マクロブックの作成方法ですが・・・ 1.開発タブの「マクロの記録」ボタンを押してマクロの記…

選択範囲の金額を百万円単位に変換する

前回のコードをちょっといじっただけです。タイトルのとおり選択範囲の金額を百万円単位に変換します。”金額”と表現しましたが単純に選択範囲の数値を1,000,000で割るだけです。前回と同じく「セルの値が0,空白,文字列,日付のいずれかの場合は処理をしない」…

選択範囲の金額を千円単位に変換する

というわけで、今日もVBAの勉強がてらマクロを作ってみます。タイトルのとおり選択範囲の金額を千円単位に変換します。”金額”と表現しましたが単純に選択範囲の数値を1,000で割って小数点以下を切り上げるだけです。「形式を選択して貼り付け→除算」でもでき…

セル範囲の左上の行数、列数の取得について

ある特定のセル範囲の左端および上端(略して左上)の行数、列数を求める際は セル範囲を表すオブジェクト.Rows(1).Rowセル範囲を表すオブジェクト.Columns(1).Column と記入するのが腑に落ちるんですけど、なぜか セル範囲を表すオブジェクト.Rowセル範囲を…

エラー処理について

前回はIF文を使用して想定されるエラーを処理していましたが、今回はOn Error GoToステートメントでざっくりエラー処理をしてみます。青色が今回追記した部分です。あわせて、不要になったIF文などをいくつか削除しました。 ***************…

クリップボードのデータを選択中のセルから可視セルのみに貼り付ける

タイトルのとおりです。でもこれ実はパクリです。 だるまのつぶやき---エクセルVBA小技集 上記のリンク先にある、だるまさんという方の作られた「可視セルへ貼り付け」というマクロに”選択したセル(アクティブセル)から下方向へ貼り付け”という機能を自分…

これから始めます!

これから始めます!と銘打ったものの、実はフライングで関連書籍などを先に読んでおきました。(基本中の基本ぐらいは把握しておきたかったので)仕事でエクセルを使用することが多く、こんなことができればいいなーとかあんなことができればいいなー等々、…

プログラミングについて

プログラミングについて、これからまったりお勉強をしていこうと思っているわけです。・・・が、私のプログラミングの知識といえば高校時代にBASICやアセンブラを少しと、社会人になってから自作のBBSを設置するためにPerlを独学で勉強したくらいかなぁ・・…