困ったー

困ったことを調べたブログ

【エクセル2016】マクロを使うには?

エクセル2016でマクロを使用するには、以前のエクセルと同じように開発メニューが表示できるようにしましょう。

 

マクロを使うには?

Construction Site

エクセルのマクロとは?

Visual Basicのようなスクリプトを使って、自分だけのオリジナルな処理を作成できる機能です。

いつもいつも同じ手順で繰り返しているような処理を、マクロを使って1度に処理できるようにすると事務も効率化できるでしょう。

 

マクロを使う準備は?

まず「ファイル」メニューから、「オプション」を選びます。

オプションが出たら、左側の項目から「リボンのユーザ設定」を選びます。

右側にある「開発」のチェックボックスをオンにします。

f:id:apicode:20150916092023p:plain

 

すると、「開発」メニューが表示されます。

リボンから「ビジュアルベーシックエディター」や「マクロ」といった機能をワンクリックで呼び出せるようになります。

f:id:apicode:20150916092025p:plain

 

マクロが動作するか確認するには?

実際にエクセル2016でマクロを使ってみて、マクロが動作するか確認してみましょう。

ここでは「ハローワールド」という文字をダイアログだけのプログラムを実行します。

 

まずは開発タブを選びます。タブがない場合にはオプション設定を確認しておきましょう。

次に「Visual Basic」をリボンで選びます。するとビジュアルベーシックエディターが起動します。

f:id:apicode:20150916092025p:plain

 

「vba project」というものが作られます。これは「マクロ」全般を含みます。「マクロ」ではいろんなファイルを使う場合がありますから、プロジェクトが1つの管理単位となります。ファイルを入れるフォルダーのようなもの考えるとわかりやすいかもしれません。

 

そのプロジェクトの中には「Sheet1」というファイルがあるので右クリックします。そして「コードの表示」を選びます。

または「Sheet1」をダブルクリックするだけでもOKです。

f:id:apicode:20150916092641p:plain

 

ここに文字列を入れます。

Sub test()
    MsgBox "HelloWorld!"
End Sub

f:id:apicode:20150916092642p:plain

 

カーソルがまだ文字入力の画面に残った状態で「F5」キーを押します。

するとプログラムが実行されます。

下記のように表示されます。

表示されたら「OK」を押してダイアログを閉じます。

f:id:apicode:20150916092644p:plain

 

このように

Sub プログラム名()
    命令1

 命令2....
End Sub

とマクロの命令を書いていくのが基本となります。

 

マクロで書式を設定するには?

マクロを使うと、一括して処理を行えるようになるので便利です。

今までなら、セルを選んで、「xx」メニューを出して「yy」ボタンを押して、「zz」を選んで...というのを毎回実行していました。

それをワンボタンでやれるようになると、時間的にもずいぶん楽です。

ここではセルの書式変更をしてみましょう。

 

まずサンプルとしてA1に適当な数値を入れます。

f:id:apicode:20150916094852p:plain

「開発」メニューから「VisualBasci」を選びビジュアルベーシックエディターを起動します。

Sheet1をダブルクリックして、シート用のスクリプトウィンドウを開きます。

次のように入れます。

Sub test()
   Range("A1").NumberFormatLocal = "0%"
End Sub

f:id:apicode:20150916094905p:plain

これはセル(A1)の書式設定を「パーセント表示」にしろという命令です。

F5キーを押して実行後、エクセルの画面に戻ると、セルがちゃんとパーセント表示になっています。パーセントでは1が100ですから、155は15500になっているわけです。

f:id:apicode:20150916094910p:plain

書式を数値にする

0_ と指定すると書式が文字列になります。

Sub test()
   Range("A1").NumberFormatLocal = "0_ "
End Sub

 

書式を日付にする

yyyy/m/dと指定すると書式が文字列になります。

Sub test()
   Range("A1").NumberFormatLocal = "yyyy/m/d"
End Sub

 

書式を文字にする

アットマークを指定すると書式が文字列になります。

Sub test()
   Range("A1").NumberFormatLocal = "@"
End Sub

 

マクロでセルを上下反転させるには?

選択した複数セルを上下反転させたい場合があります。

本来は「並べ替え」機能でソートすればいいのですが、数字がもっとランダムに並んでいて上下を反転させたいだけ、という場合には効果がありません。

 

f:id:apicode:20150917101026p:plain

 

こういうときはマクロは便利です。

開発>Visual Basicでエディターを起動します。

この場合、選択セルを反転させるので該当シートか、もしくはブックのウィンドウを開き以下を入力。F5キーで実行させると、上下が反転します。

Sub Hanten()
   Dim Dat1 As Variant, Dat2() As Variant
   Dim rCnt As Long, cCnt As Integer

  Dim r As Long, c As Integer

   Dat1 = Selection.Value
   rCnt = UBound(Dat1, 1)
   cCnt = UBound(Dat1, 2)
   ReDim Dat2(1 To rCnt, 1 To cCnt)
   For r = 1 To rCnt
   For c = 1 To cCnt
     Dat2(r, c) = Dat1(rCnt + 1 - r, c)
   Next c
   Next r
   Selection.Value = Dat2
End Sub

 

実行後にエクセルのシートを見ると、こんな感じです。見事に上下が反転しています。

f:id:apicode:20150917101327p:plain

 

参考:エクセル データ列の上下反転のやり方 - たとえば、A2からA100まで数... - Yahoo!知恵袋

 

マクロでエクスプローラを起動するには?

エクセルのマクロを書くため、開発メニューからビジュアルベーシックエディターを起動します。

 

シート1をダブルクリックして以下を入力。したらすぐにF5キーを押して実行します。

Sub Main()

   Dim ie As Object

   Set ie = CreateObject("InternetExplorer.Application")

   ie.Visible = True

End Sub

 

すると、インターネットエクスプローラが起動します。

f:id:apicode:20150916105840p:plain

 

 

マクロの素朴な疑問

マクロの意味?

マクロは「大きい」という意味です。

反対語が「ミクロ」となるのでイメージしやすいかもしれません。

 

「ミクロ経済学」では個別の市場を分析し、「マクロ経済学」となると一国全体の経済を分析します。

 

ただしコンピュータやプログラミングでは、プログラムの命令を記録したものなどにマクロという言い方をします。

エクセルならVBAを使って作成したプログラムのことをマクロといいます。

 

2016ではエクセル2010のマクロでも動く?

基本的には動きます。

 

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 また、当サイトの情報によって生じたいかなる損失について一切の責任を負いません。 あらかじめご了承ください。