<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>インストラクターのネタ帳</title>
    <link rel="alternate" type="text/html" href="/itnote/" />
    <link rel="self" type="application/atom+xml" href="/itnote/atom.xml" />
    <id>tag:www.relief.jp,2011-06-06:/itnote//8</id>
    <updated>2012-02-22T02:28:24Z</updated>
    <subtitle>『インストラクターのネタ帳』では、ワード・エクセル・パワーポイント・アクセスなどのインストラクションをする中でよくご質問いただくこと、検索されているキーワードをベースに、使い方・FAQ・Tips・Q&amp;A・裏技等を平日のほぼ毎日ご紹介しています。 </subtitle>
    <generator uri="http://www.sixapart.com/movabletype/" version="5.04">Movable Type Advanced</generator>

<entry>
    <title>ノートを一括削除する－Officeボタン-配布準備-ドキュメント検査</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017779.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17779</id>

    <published>2012-02-22T01:32:58Z</published>
    <updated>2012-02-22T02:28:24Z</updated>

    <summary> 対象：PowerPoint2007 このサイト「インストラクターのネタ帳」では...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="PowerPoint 2007 パワーポイント2007の使い方" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：PowerPoint2007
</div>

このサイト「インストラクターのネタ帳」では、プレゼンテーションファイルに含まれている<a href="/itnote/archives/001515.php">ノートをすべて削除するマクロ</a>をご紹介しています。

PowerPoint 2007からはマクロを使わなくても、標準の機能でノートを一括削除することができるようになっています。]]>
        <![CDATA[ただし、ノートを一括削除するコマンドと考えてしまうと、少々みつけにくい場所にコマンド存在しています。
<div class="operation">
▼操作手順：ノートを一括削除する
［Officeボタン］
　－［配布準備］
　　－［ドキュメント検査］をクリック
　↓
「このファイルの変更内容が保存されていません。ドキュメント検査で削除されたデータは復元できない可能性もあるため、ドキュメント検査を使用する前にこのファイルを保存してください。今すぐこのファイルを保存しますか？」メッセージが表示された場合は［はい］ボタンをクリック
　↓
［ドキュメント検査］ダイアログ
　－［プレゼンテーションノート］チェックボックスをOnに
　↓
［ドキュメント検査］ダイアログ
　－［検査］ボタンをクリック
　↓
［ドキュメント検査］ダイアログ
　－［プレゼンテーションノート］欄
　　－［すべて削除］ボタンをクリック
　↓
［ドキュメント検査］ダイアログ
　－［閉じる］ボタンをクリック
</div>

ノートの一括削除という独立したコマンドが存在するのではなく、作成したプレゼンテーションファイルを、他の人に渡すためにファイルをキレイにするコマンドから、ノートを一括削除することができます。

［Officeボタン］－［配布準備］の中の、［ドキュメント検査］コマンドを

<img src="/itnote/archives/images/017779_a.png" alt="ノートを一括削除する" />

実行すると、［ドキュメント検査］ダイアログが表示されます。

［ドキュメント検査］ダイアログでは、プレゼンテーションファイルを配布する前にキレイにしておくほうがいいと思われる項目についてチェックを行うことができます。

この［ドキュメント検査］ダイアログの下図のような場所に

<img src="/itnote/archives/images/017779_b.png" alt="ノートを一括削除する" />

［プレゼンテーションノート］チェックボックスがあり、このチェックをOnしておいてから［検査］ボタンをクリックすることで、ノートが存在しているかどうかのチェックが行われます。

ノートが存在していた場合は下図のような状態になり

<img src="/itnote/archives/images/017779_c.png" alt="ノートを一括削除する" />

ここで［すべて削除］ボタンをクリックすることでノートが一括削除されます。

PowerPoint 2010の場合も、考え方はPowerPoint 2007と同じなのですが、［ドキュメント検査］コマンドの配置が2010と2007とでも大きく違うので別記事としてご紹介させていただきます。]]>
    </content>
</entry>

<entry>
    <title>先頭に円マークを付ける関数－CONCATENATE関数</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017777.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17777</id>

    <published>2012-02-21T04:06:59Z</published>
    <updated>2012-02-21T05:02:11Z</updated>

    <summary> 対象：Excel2003, Excel2007, Excel2010 「エクセ...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="Excel エクセルの使い方-関数/計算式-文字列操作" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：Excel2003, Excel2007, Excel2010
</div>

「エクセルで頭部に円マークを付ける関数」
という検索が行われていました。

数値の前に円マークを表示する方法を探している方による検索でしょう。

もちろん、
関数を使う必要はまったくなく、多くの場合は関数を使わずに行うほうがいいことではありますが、どうしても関数を使って数値の前に円マークを表示したい方向けにその方法をご紹介しておきます。]]>
        <![CDATA[CONCATENATE関数を利用します。
<div class="operation">
▼操作方法：数値の前に円マークを表示する
<span class="small">※A1セルに数値が入力されているときにB1セルに円マークのついた状態でその数値を表示する例</span>

B1セルに
「=CONCATENATE("\",A1)」
という数式を入力する
</div>

CONCATENATEは、文字列、数値、セル参照を一つの文字列にしてくれるワークシート関数です。

B1セルに「=CONCATENATE("\",A1)」という数式が入力されているときにA1セルに「1234」という数値が入力されていれば、「\1234」と、元の数値「1234」の先頭に円マーク「\」のついた状態となります。

更に、桁区切りカンマも表示したいのであれば、TEXT関数も併用して
「=CONCATENATE("\",TEXT(A1,"#,##0"))」
としてください。

どうしても、関数でやりたいのであれば、ですが。

ちなみに、
関数を使うということは、A1セルに値が入力されているときに、A1セルで円マークもついた状態にすることはできません。A1セルに数値を入力して、他のセルに関数を使った数式
「=CONCATENATE("\",A1)」
「=CONCATENATE("\",TEXT(A1,"#,##0"))」
などを入力してやる必要があります。

当然ながら、
Excelを、ちゃんと使える方の場合、文字列として「\」と数値がくっついた状態が欲しいのでなければ、関数を使ったりせず、セルの書式設定を指定します。

<a href="/itnote/archives/002808.php">［セルの書式設定］ダイアログを使うのが丁寧な設定操作</a>です。

実務上は、リボンやツールバーのボタンを利用する方が多いでしょう。

Excel 2007・2010ならば［ホーム］タブ－［数値］グループ－［通貨表示形式］ボタンや

<img src="/itnote/archives/images/017777_a.png" alt="先頭に円マークを付ける関数" />

同じく［ホーム］タブ－［数値］グループの［表示形式］ボックスから「通貨」や「会計」を

<img src="/itnote/archives/images/017777_b.png" alt="先頭に円マークを付ける関数" />

選択する方が多いでしょう。

Excel 2003の場合は［書式設定］ツールバー－［通貨スタイル］ボタンから

<img src="/itnote/archives/images/017777_c.png" alt="先頭に円マークを付ける関数" />

設定する方が多いでしょう。

なお、私の場合、
円マークを表示したいということはそれほどありませんが、細かな指定が不要ならば、<a href="/itnote/archives/002794.php">ショートカットキー［Ctrl］＋［Shift］＋［$］（4）を利用して円マークを表示</a>させます。

<div class="comments-head">関連語句</div>
<span class="small">キーボードショートカット, ショートカットキー, 短縮キー, Keyboard shortcuts</span>]]>
    </content>
</entry>

<entry>
    <title>互換モードか否かによるWord2010のテキストボックスの違い</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017772.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17772</id>

    <published>2012-02-20T01:46:38Z</published>
    <updated>2012-02-20T02:44:39Z</updated>

    <summary> 対象：Word2010 Word 2010の場合、ファイルが互換モードか否かで...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="Office 2010 オフィス2010の使い方" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：Word2010
</div>

<a href="/itnote/archives/013775.php">Word 2010の場合、ファイルが互換モードか否かで、ワードアートが異なること</a>をご紹介しました。

同じことが他のオブジェクトでもいえます。

テキストボックスについて確認しておきましょう。

ワードアートの場合、互換モードか、互換モードでないかによって、挿入操作を行う段階から違いがはっきり見えていました。

違いがはっきりしているだけ、混乱はむしろ少ないかもしれません。

テキストボックスの場合は、挿入操作を行う段階では違いははっきりわかりません。

しかし挿入を行ったあとは、違った状態となります。

下図が互換モードのファイルでテキストボックスを挿入したあとのリボンの状態で、

<img src="/itnote/archives/images/017772_a.png" alt="互換モードか否かによるWord2010のテキストボックスの違い" />

下図が互換モードではないファイルでテキストボックスを挿入したあとのリボンの状態です。

<img src="/itnote/archives/images/017772_b.png" alt="互換モードか否かによるWord2010のテキストボックスの違い" />]]>
        <![CDATA[リボンに表示されているコンテキストツールの名称も異なります。

互換モードの場合は［テキストボックスツール］、互換モードでない場合は［描画ツール］が表示されます。

その中に表示されているコマンドの並びも異なります。

互換モードの［テキストボックスツール］－［書式］タブの左のほうには下図のようなコマンドが並び

<img src="/itnote/archives/images/017772_c.png" alt="互換モードか否かによるWord2010のテキストボックスの違い" />

互換モードでない［描画ツール］－［書式］タブの左のほうには下図のようなコマンドが並んでいます。

<img src="/itnote/archives/images/017772_d.png" alt="互換モードか否かによるWord2010のテキストボックスの違い" />

2003までのWordで作成したファイルであれば、拡張子が「.doc」と2010標準の「.docx」ではないのでまだわかりやすいですが、Word 2007で作成されたファイルの場合、拡張子は「.docx」だけれど互換モードとなるので、より注意が必要だと感じています。]]>
    </content>
</entry>

<entry>
    <title>複数のシートからCOUNTIFしたい</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017770.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17770</id>

    <published>2012-02-16T22:57:17Z</published>
    <updated>2012-02-16T23:52:45Z</updated>

    <summary> 対象：Excel2003, Excel2007, Excel2010 「エクセ...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="Excel エクセルの使い方-関数/計算式-統計" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：Excel2003, Excel2007, Excel2010
</div>

「エクセル COUNTIF関数 複数のシート」
という検索が行われていました。

COUNTIF関数に関する定番的ご質問の一つです。

複数のシートを串刺しするように、3D集計するように、COUNTIFしたいという要望です。

このご質問をする方は、以下のような数式を試したりするようです。

例えば、「Sheet1」「Sheet2」のワークシートのA1:A100セルに入力されている「○」の数をカウントしようとして
「=COUNTIF(Sheet1:Sheet2!A1:A100,"○")」
という3D集計でお馴染みの形の数式を試してみるわけです。]]>
        <![CDATA[しかしこの数式では、COUNTIF関数の場合、#VALUE!エラーとなってしまいます。
<div class="operation">
▼操作方法：複数のシートから条件に合致したセルの個数を数える
<span class="small">※Sheet1・Sheet2のA1:A100セルに入力されている○の数をカウントする例</span>
「=COUNTIF(Sheet1!A1:A100,"○") + COUNTIF(Sheet2!A1:A100,"○")」
という数式を入力する
</div>

3D集計できる関数というのは限られていて、COUNTIF関数は3D集計できない関数です。

複数のシートから条件を指定してセルの個数・データの個数をカウントする場合、上記のように個々のシートで個数をカウントして、それを合計するのが基本的な考え方です。]]>
    </content>
</entry>

<entry>
    <title>プレゼンの進行度合いを示すプログレスバーを作成するマクロ</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017769.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17769</id>

    <published>2012-02-15T23:26:04Z</published>
    <updated>2012-02-16T00:22:10Z</updated>

    <summary> 対象：Excel2003, Excel2007, Excel2010 「Ins...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="PowerPoint パワーポイントの使い方-マクロ/VBA" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：Excel2003, Excel2007, Excel2010
</div>

「<a href="http://en.kioskea.net/faq/937-insert-a-progress-bar-to-powerpoint-presentation">Insert a progress bar to powerpoint presentation</a>」という記事で、PowerPointにプログレスバーを作成するVBA（Visual Basic for Applications）マクロが紹介されています。

個々のスライドに、プレゼンテーションの進行度合いを表すプログレスバーを作成してくれるマクロです。

便利なマクロなのですが、少し改良したいと感じる部分もあります。

一つは、プログレスバーの背景色です。
プログレスバーと同系色の薄い色が背景色として設定されているほうが、よりプログレスバーらしく感じられるのではないかと思いました。

もう一つは、プログレスバーの色や高さなどの指定箇所です。
コードの中でプログレスバーの色や高さが直接指定されていますが、定数を定義してプロシージャの上のほうで変更しやすくしておきたいと感じました。]]>
        <![CDATA[基本的考え方は元のマクロと同じですが、いくつか手をいれたマクロをご紹介しておきます。
<div class="operation">
▼プログレスバーを作成するマクロ
Sub プログレスバーを作成する()

　Const r As String = "00"　　'色・RGB値のR
　Const g As String = "99"　　'色・RGB値のG
　Const b As String = "00"　　'色・RGB値のB
　Const pbH As Long = 20  　　'高さ
　Const pbBG As Single = 0.6　'背景の透過性

　Dim i As Long
　Dim s As Shape

　On Error Resume Next

　With ActivePresentation
　　'背景 ProgressBarBG の設定
　　.SlideMaster.Shapes("ProgressBarBG").Delete
　　Set s = .SlideMaster.Shapes.AddShape( _
　　　Type:=msoShapeRectangle, _
　　　Left:=0, _
　　　Height:=pbH, _
　　　Top:=.PageSetup.SlideHeight - pbH, _
　　　Width:=.PageSetup.SlideWidth)
　　With s
　　　.Fill.ForeColor.RGB = _
　　　　RGB(CInt("&H" & r), CInt("&H" & g), CInt("&H" & b))
　　　.Fill.Transparency = pbBG
　　　.Line.Visible = msoFalse
　　　.Name = "ProgressBarBG"
　　End With

　　'プログレスバー ProgressBar の設定
　　For i = 1 To .Slides.Count
　　　.Slides(i).Shapes("ProgressBar").Delete
　　　Set s = .Slides(i).Shapes.AddShape( _
　　　　Type:=msoShapeRectangle, _
　　　　Left:=0, _
　　　　Height:=pbH, _
　　　　Top:=.PageSetup.SlideHeight - pbH, _
　　　　Width:=i * .PageSetup.SlideWidth / .Slides.Count)
　　　With s
　　　　.Fill.ForeColor.RGB = _
　　　　　RGB(CInt("&H" & r), CInt("&H" & g), CInt("&H" & b))
　　　　.Line.Visible = msoFalse
　　　　.Name = "ProgressBar"
　　　End With
　　Next i
　End With

End Sub
</div>

はじめの3行
　Const r As String = "00"
　Const g As String = "99"
　Const b As String = "00"
で、プログレスバーの色R・G・Bそれぞれの値を「00」から［FF］の16進の値で指定できます。

次の
　Const pbH As Long = 20
で、プログレスバーの高さを、次の
　Const pbBG As Single = 0.6
で、プログレスバーの背景色の透過性・透過度合いを指定できます。透過性は、数値が「1」に近いほど、透過の度合いが大きく薄い色となります。

　With ActivePresentation
　　.SlideMaster.Shapes("ProgressBarBG").Delete
に続く、
　　Set s = .SlideMaster.Shapes.AddShape( _
　　　Type:=msoShapeRectangle, _
　　　Left:=0, _
　　　Height:=pbH, _
　　　Top:=.PageSetup.SlideHeight - pbH, _
　　　Width:=.PageSetup.SlideWidth)
　　With s
　　　.Fill.ForeColor.RGB = _
　　　　RGB(CInt("&H" & r), CInt("&H" & g), CInt("&H" & b))
　　　.Fill.Transparency = pbBG
　　　.Line.Visible = msoFalse
　　　.Name = "ProgressBarBG"
　　End With
の部分が、プログレスバーの背景を作成している箇所です。

　　Set s = .SlideMaster.Shapes.AddShape( _
　　　Type:=msoShapeRectangle, _
とスライドマスターに四角形のシェイプを挿入するときに、
　　　Left:=0, _
　　　Height:=pbH, _
　　　Top:=.PageSetup.SlideHeight - pbH, _
　　　Width:=.PageSetup.SlideWidth)
場所やサイズを指定しています。
ここで、定数「pbH」を使って高さや上からの位置を指定しています。

つづく
　　　.Fill.ForeColor.RGB = _
　　　　RGB(CInt("&H" & r), CInt("&H" & g), CInt("&H" & b))
　　　.Fill.Transparency = pbBG
の部分で、定数「r」「g」「b」を使って色を指定して、定数「pbBG」で透過性を指定しています。

最後に
　　　.Name = "ProgressBarBG"
名前を「ProgressBarBG」と指定しています。

同じ名前のシェイプが存在しているとエラーとなるので、最初に
　.SlideMaster.Shapes("ProgressBarBG").Delete
と「ProgressBarBG」を削除しています。

また「ProgressBarBG」という名前のシェイプが存在しないときに「ProgressBarBG」を削除しようとするとエラーとなってしまうので、これを回避するために変数宣言の直後で
　On Error Resume Next
としています。

そのあとのFor ～ Next文の中の処理は、個々のスライドにプログレスバーを作成している箇所です。

ここは、先に行ったスライドマスターへのプログレスバーの背景の作成処理と、基本的考え方や流れは同じです。

違うのは個々のスライドに作成するために全体が
　　For i = 1 To .Slides.Count
とループ処理に入って処理対象が個々のスライドになり、作成するシェイプの名前が「ProgressBar」になっていることと、プログレスバーの色指定後に透過性の指定を行っていないことです。]]>
    </content>
</entry>

<entry>
    <title>選択されたシートを逆順に並び替えるマクロ </title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017766.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17766</id>

    <published>2012-02-14T22:35:54Z</published>
    <updated>2012-02-14T23:31:18Z</updated>

    <summary> 対象：Excel2003, Excel2007, Excel2010 「シート...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="Excel エクセルの使い方-マクロ/VBA" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：Excel2003, Excel2007, Excel2010
</div>

「<a href="http://ameblo.jp/team-positive/entry-10908079809.html">シートの順番を逆転させるマクロコード</a>」という記事で、Excelファイルの全シートの順番を、逆の順序に並び替えするVBA（Visual Basic for Applications）マクロが紹介されています。

こちらのマクロでは、全シートを並び替えているわけですが、一部のシートだけを並び替えたいという要望も実務では出てくるな、と感じたのでそんなマクロを作ってみました。]]>
        <![CDATA[基本的な考え方は、全シートを並び変える場合と同じなのですが、全部ではなく一部のシートとなると、やるべきことはどうしても増えます。
<div class="operation">
▼連続した選択されたシートの順序を逆にする

Sub 選択された連続したシートを逆順に並び替える()

　Dim s As Object
　Dim s_id() As Long
　Dim cnt As Long
　Dim i As Long

　With ActiveWindow
　　cnt = .SelectedSheets.Count
　　If cnt < 2 Then Exit Sub
　　ReDim s_id(1 To cnt)

　　i = 1
　　For Each s In .SelectedSheets
　　　s_id(i) = s.Index
　　　i = i + 1
　　Next
　End With

　For i = 1 To cnt - 1
　　If s_id(i + 1) - s_id(i) <> 1 Then MsgBox "連続したシートを選択してください。": Exit Sub
　Next i

　For i = 1 To cnt - 1
　　Sheets(s_id(1)).Move _
　　　After:=Sheets(s_id(cnt) - i + 1)
　Next i

　Sheets(s_id).Select

End Sub
</div>

最初の
　　cnt = .SelectedSheets.Count
　　If cnt < 2 Then Exit Sub
　　ReDim s_id(1 To cnt)
で、選択されているシートの枚数を変数・cntに格納して、シートが1枚しか選ばれていなければマクロを終了し、2枚以上ならば配列・s_id()のサイズを決めています。

つづく最初のループ処理
　　i = 1
　　For Each s In .SelectedSheets
　　　s_id(i) = s.Index
　　　i = i + 1
　　Next
で、配列・s_id()に、選択されているシートのインデックス番号を格納していきます。

このマクロは、連続したシートだけを並び替える仕様としたので、2つ目のループ処理
　For i = 1 To cnt - 1
　　If s_id(i + 1) - s_id(i) <> 1 Then MsgBox "連続したシートを選択してください。": Exit Sub
　Next i
で、もし連続していないシートが選ばれていたら、メッセージを表示してマクロを終了します。

3つ目のループ処理
　For i = 1 To cnt - 1
　　Sheets(s_id(1)).Move _
　　　After:=Sheets(s_id(cnt) - i + 1)
　Next i
で実際にシートを並び替えています。

連続しているシートがどんどん移動されていくので、動かす元は常に「Sheets(s_id(1))」のままで、動かす先が「After:=Sheets(s_id(cnt) - i + 1)」と変化していきます。

連続していないシートで同じようなことを実装する場合、この動かす元をうまく指定してやる必要があるでしょうか。

最後に、どのシートを並び替えたのかがわかるように、選択されていたシートを
　Sheets(s_id).Select
選び直しています。]]>
    </content>
</entry>

<entry>
    <title>エクセルマクロ入門講座と初級講座の違いについて</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017765.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17765</id>

    <published>2012-02-14T09:35:26Z</published>
    <updated>2012-02-15T01:04:53Z</updated>

    <summary>『ビジネスパーソンのためのExcelマクロ入門講座』とその続編 『ビジネスパーソ...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="セミナー開催のお知らせ＆実施のご報告" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="elementary" label="elementary" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[『ビジネスパーソンのためのExcelマクロ<strong>入門</strong>講座』とその続編
『ビジネスパーソンのためのExcelマクロ<strong>初級</strong>講座』を開催させていただいていますが、この2つの講座の内容の違いについて疑問を持つ方がいらっしゃるようなので、その違いをご案内させていただきます。]]>
        <![CDATA[「入門」は、プログラミングの経験のまったくない方、Excelマクロをまったく作成したことのない方を対象としています。そして、
「初級」は、「入門」を受講いただいた方を対象としています。


Excelマクロを作成するということは、プログラミングを行うということです。

そのため
「入門」
では、プログラミングを行うために絶対に必要な知識
・変数
・条件分岐
・ループ処理
について、まずお伝えしています。

ここであげた、
・変数
・条件分岐
・ループ処理
は、Excelマクロを作成するためのプログラム言語VBA（Visual Basic for Applications）に限らず、どんな言語であってもプログラミングをするときに知っておくべき文法知識です。

その基本の基本を、「入門」の中で、講座全体の時間の約半分を使ってお伝えしています。

ですが、限られた時間ですから、残念ながらお伝えできない部分もあります。

変数は、オブジェクト変数や配列変数については触れていません
条件分岐は、Select Case文やLike比較には触れていません。
ループ処理は、For Each ～ Next文やDo ～ Loop文については触れていません。

これのような、残念ながら省略した部分を、「初級」の中ではお伝えしています。<span class="small">（実用的なExcelマクロを作るためには、オブジェクト変数・For Each ～ Next文は非常に重要です。）</span>

プログラミングの基本の基本をお伝えしたうえで、「入門」の中では、条件付き書式のようなマクロや、一つのブックの中にある複数のシートを一枚にまとめるマクロをご紹介しています。

「初級」の中では、それを踏まえて、フォルダを指定して複数のブックを開き、開いた複数のブックに含まれる複数のシートを、一枚のシートにまとめるマクロをご紹介しています。

更に、実務の中でよくいただく要望として、何らかの操作をユーザーが行ったときに自動的に処理を行うためのイベントプロシージャ、独自計算を関数にしたユーザー定義関数を作るためのFunctionプロシージャ、自分以外の他の人にも使ってもらうマクロを作成するためには必須となるエラー処理についても触れています。

まとめると以下のような違いがあります。

<table>
<tr><th><br /></th><th>入門</th><th>初級</th></tr>
<tr><td>変数</td><td>一般的な変数のみ</td><td>オブジェクト変数<br/ >配列変数</td></tr>
<tr><td>条件分岐</td><td>基本的なIf文のみ</td><td>Select Case文<br />If文のLike比較</td></tr>
<tr><td nowrap>ループ処理</td><td nowrap>For ～ Next文のみ</td><td nowrap>For Each ～ Next文<br/ >Do ～ Loop文</td></tr>　
<tr>
<td nowrap>作成する<br />マクロ</td>
<td>条件付き書式のようなマクロ<br />
同じブックに含まれる複数のシートを1枚にまとめるマクロ</td>
<td>フォルダを指定して複数のブックを開き、開いた複数のブックの複数のシートを、1枚のシートにまとめるマクロ</td>
</tr>
<tr><td>その他</td><td><br /></td>
<td nowrap>
イベントプロシージャ<br/ >
Functionプロシージャ<br/ >
エラー処理<br/ >
</td>
</tr>
</table>
<br />]]>
    </content>
</entry>

<entry>
    <title>Word2010・2007で罫線の表のプロパティダイアログは？ </title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017764.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17764</id>

    <published>2012-02-13T23:14:37Z</published>
    <updated>2012-02-14T00:07:29Z</updated>

    <summary> 対象：Word2007, Word2010 「罫線の表のプロバティはどこ ワー...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="Word 2007 ワード2007の使い方" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：Word2007, Word2010
</div>

「罫線の表のプロバティはどこ ワード2010」
という検索が行われていました。

元々2003までのWordをお使いで、最近Word 2010を使い始めた方による検索でしょう。

2003までのWordの場合、メニュー［罫線］内に［表のプロパティ］コマンドが配置されていました。

同様のコマンドが、Word 2010でどこにあるのかを探している方による検索です。]]>
        <![CDATA[まずは、Word 2007・2010の、リボンから［表のプロパティ］ダイログを表示する操作をご紹介しておきます。
<div class="operation">
▼操作手順：表のプロパティダイアログを表示する
表の中にカーソルを移動する
　↓
［表ツール］
　－［レイアウト］タブ
　　－［表］グループ
　　　－［プロパティ］をクリック
</div>

Wordに限らず、2007以降のMicrosoft Officeでは、カーソルのある位置により、何がアクティブになっているかにより、リボンの状態が変化します。

［表のプロパティ］ダイアログを表示するには、まずは、表の中にカーソルを置いてください。

そうするとリボンに［表ツール］が表示されます。

<img src="/itnote/archives/images/017764_a.png" alt="Word2010・2007で罫線の表のプロパティダイアログは？ " />

表内にカーソルが置かれると表示される［表ツール］の、［レイアウト］タブ－［表］グループ－［プロパティ］から［表のプロパティ］ダイアログを表示できます。

<img src="/itnote/archives/images/017764_b.png" alt="Word2010・2007で罫線の表のプロパティダイアログは？ " />

「罫線の表のプロバティはどこ 2010」
という検索への回答のため、まずはリボンからの操作をご紹介しましたが、実務上は以下の操作のほうが簡単です。
<div class="operation">
▼操作概要：表のプロパティダイアログを表示する
表の中で右クリック
　↓
ショートカットメニュー［表のプロパティ］をクリック
</div>

Word 2007・2010をお使いの方で、［表のプロパティ］ダイアログの表示操作をご存じなかったという方は、一度ご自分の手を動かしてご確認ください。]]>
    </content>
</entry>

<entry>
    <title>◆実施報告◆ 2/12（日）14:30～エクセルマクロ入門講座を開催させていただきました。（女性4 男性1）</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017760.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17760</id>

    <published>2012-02-13T07:08:52Z</published>
    <updated>2012-02-13T08:05:24Z</updated>

    <summary>2月12日 日曜日に 『ビジネスパーソンのためのExcelマクロ入門講座』 を開...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="セミナー開催のお知らせ＆実施のご報告" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[2月12日 日曜日に
『ビジネスパーソンのためのExcelマクロ入門講座』
を開催し、5名（女性4名＆男性1名）の方にご参加いただきました。
<blockquote>
▼講座タイトル
『ビジネスパーソンのためのExcelマクロ入門講座』

▼開催日時
2012年2月12日 日曜日
14時30分～18時30分

▼会場
ちよだプラットフォームスクウェア プレゼンテーションルーム
東京都千代田区神田錦町3‐21

▼受講対象者（以下のすべてに該当する方）
・Excelマクロを習得したいと考えているビジネスパーソン
・キーボードからアルファベットの入力が苦労なく行える方
・Excelのワークシート上でIF関数を利用した数式を作れる方

▼受講料
1万4,000円

▼講師
伊藤潔人
「インストラクターのネタ帳」管理人・Microsoft MVP for Excel
</blockquote>]]>
        Excelマクロをまったく触ったことのない方、前職者が作ったマクロの修正を迫られている方、ネットなどで探してきたコードをコピペして頑張ってらっしゃる方、C言語でのプログラミング経験のある方にもにご参加いただきました。

以前にもC言語でのプログラミング経験のある方にご参加いただいたことがあるのですが、そういった方々のお話しを伺っていると、プログラミング経験がある方にとっても、独学でExcelマクロを勉強するのは難しい部分もあるのだな、という認識を新たにしました。

今回お伝えした内容と、これまでの実務の中で積み上げられてきた知識＆経験を組み合わせて、ご自身のお仕事を少しでも楽にしてくれるようなツール・マクロを作っていただきたいと思っています。
    </content>
</entry>

<entry>
    <title>ランダムにスライドを表示するマクロ </title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017758.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17758</id>

    <published>2012-02-12T23:54:58Z</published>
    <updated>2012-02-13T02:04:34Z</updated>

    <summary> 対象：PowerPoint2003, PowerPoint2007, Powe...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="PowerPoint パワーポイントの使い方-マクロ/VBA" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：PowerPoint2003, PowerPoint2007, PowerPoint2010
</div>

スライドショーを実行するときにスライドをランダムに表示させたい、という要望の解決策の一つとして、<a href="/itnote/archives/017746.php">スライドをランダムに並び替えるマクロ</a>をご紹介しました。

このマクロは考え方がとても簡単なところがおすすめですが、やっぱり、スライドを並び替えるのではなく、スライドショーを実行するときにランダムな順序で表示させたいという要望はあります。

そのためのVBA（Visual Basic for Applications）マクロをご紹介します。

PowerPointの目的別スライドショー機能を利用したマクロです。]]>
        <![CDATA[ランダムな順序にした目的別スライドショーを作成しておいて、そのランダムな順序の目的別スライドショーを実行することで、ランダム表示が行われるというマクロです。
<div class="operation">
▼スライドショーでランダムにスライドを表示させるマクロ

Sub ランダムにスライドを表示するスライドショー()

　Const ssTitle As String = "ランダムスライドショー"

　Dim cnt As Long
　Dim flg() As Boolean
　Dim sld() As Variant
　Dim num As Long
　Dim i As Long
　Dim ss As NamedSlideShow

　With ActivePresentation

　　cnt = .Slides.Count
　　ReDim flg(1 To cnt)
　　ReDim sld(1 To cnt)

　　Randomize
　　For i = 1 To cnt
　　　Do
　　　　num = Int(Rnd * cnt) + 1
　　　　If flg(num) = False Then
　　　　　flg(num) = True
　　　　　sld(i) = .Slides.Item(num).SlideID
　　　　　Exit Do
　　　　End If
　　　Loop
　　Next i

　　With .SlideShowSettings
　　　For Each ss In .NamedSlideShows
　　　　If ss.Name = ssTitle Then
　　　　　.NamedSlideShows(ssTitle).Delete
　　　　　Exit For
　　　　End If
　　　Next

　　　.RangeType = ppShowNamedSlideShow
　　　.NamedSlideShows.Add ssTitle, sld
　　　.SlideShowName = ssTitle
　　　.Run
　　End With

　End With

End Sub
</div>

VBE（Visual Basic Editor）を起動して、標準モジュールに上記のマクロを記述して、実行してやると、ランダムな順序でスライドが表示されるスライドショーが行われます。

最後の4行
　　　.RangeType = ppShowNamedSlideShow
　　　.NamedSlideShows.Add ssTitle, sld
　　　.SlideShowName = ssTitle
　　　.Run
が、ランダムな順序の目的別スライドショーを作成して、実行している箇所です。

その前の
　　　For Each ss In .NamedSlideShows
　　　　If ss.Name = ssTitle Then
　　　　　.NamedSlideShows(ssTitle).Delete
　　　　　Exit For
　　　　End If
　　　Next
は、同じ名前の目的別スライドショーを探して削除している箇所です。

ここで使われている定数・ssTitleには、マクロの最初で
　Const ssTitle As String = "ランダムスライドショー"
と「ランダムスライドショー」という文字列を設定しています。

目的別スライドショーを設定する
　　　.NamedSlideShows.Add ssTitle, sld
の配列・sldに、スライド番号をランダムに入れているのが、
　　Randomize
　　For i = 1 To cnt
　　　Do
　　　　num = Int(Rnd * cnt) + 1
　　　　If flg(num) = False Then
　　　　　flg(num) = True
　　　　　sld(i) = .Slides.Item(num).SlideID
　　　　　Exit Do
　　　　End If
　　　Loop
　　Next i
の部分です。

このロジックは、先日ご紹介した、<a href="/itnote/archives/017748.php">重複しないランダムな数値・乱数を作成するExcelマクロ</a>と同じです。

先日の重複しない乱数を作成するExcelマクロでは
　Randomize
　For Each c In Selection
　　Do
　　　num = Int(Rnd * cnt) + 1
　　　If flg(num) = False Then
　　　　flg(num) = True
　　　　Exit Do
　　　End If
　　Loop
　　c.Value = num
　Next
とループ処理を抜けたあとに数値をセルに入力していましたが、今回のマクロではループ処理の中で
　　　　　sld(i) = .Slides.Item(num).SlideID
と配列に値を入力しているところが違うだけです。

その前の
　　cnt = .Slides.Count
　　ReDim flg(1 To cnt)
　　ReDim sld(1 To cnt)
では、スライドの枚数をカウントして、スライド番号を格納する配列と、ランダムに並び替えるときに使うフラグ用配列のサイズを決めています。]]>
    </content>
</entry>

<entry>
    <title>Excel VBAポケットリファレンス</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017755.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17755</id>

    <published>2012-02-10T11:15:14Z</published>
    <updated>2012-02-11T03:32:53Z</updated>

    <summary>改訂第3版 Excel VBAポケットリファレンス前田 智美 技術評論社  20...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="参考図書" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<table  border="0" cellpadding="5"><tr><td valign="top"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774144401/itnote-1-22/" target="_top"><img src="http://ecx.images-amazon.com/images/I/51qpAzqEpJL._SL160_.jpg" border="0" alt="改訂第3版 Excel VBAポケットリファレンス" /></a></td><td valign="top"><font size="-1"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774144401/itnote-1-22/" target="_top">改訂第3版 Excel VBAポケットリファレンス</a><br />前田 智美 <br /><br />技術評論社  2010-11-12<br />売り上げランキング : 23404<br /><br /><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774144401/itnote-1-22/" target="_top">Amazonで詳しく見る</a></font> <font size="-2">by <a href="http://www.goodpic.com/mt/aws/index.html" >G-Tools</a></font></td></tr></table>]]>
        『エクセルマクロ入門講座』『エクセルマクロ初級講座』を受講いただいた方から、
「VBAのプロパティとかメソッドとかが一覧になっているような本ってないのでしょうか？」
といったご質問を何度かいただきました。

ヘルプがそれに該当するドキュメントなわけですが、やはり紙の書籍がいいという方が少なくないようです。

Excel VBAの、紙のリファレンスが欲しいという方に、この書籍をご紹介しておきます。

「ポケットリファレンス」というタイトルでありながら500ページを超えるボリュームで、Excel VBAをバリバリ使っていきたいという方におすすめです。
    </content>
</entry>

<entry>
    <title>■ご案内■ エクセルマクロ入門講座 3/3（土）13:30より</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017753.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17753</id>

    <published>2012-02-10T04:57:33Z</published>
    <updated>2012-02-19T06:23:26Z</updated>

    <summary> 2012年3月3日（土）13時30分より、エクセルマクロの入門者向けセミナー ...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="セミナー開催のお知らせ＆実施のご報告" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="myseminar" label="mySeminar" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<img src="/itnote/archives/images/017753.png" alt="ビジネスパーソンのためのExcelマクロ入門講座" />

2012年3月3日（土）13時30分より、エクセルマクロの入門者向けセミナー
『ビジネスパーソンのためのExcelマクロ入門講座』
を開催させていただきます。

ビジネスパーソンがExcelマクロを使えれば、格段に仕事の効率がアップするのは間違いありません。繰り返して行わなければならない作業を、Excelにやってもらえばいいのですから。

しかし残念ながら、市販されているExcelマクロの本は、細かな部分までいきなり書かれていて、マクロを作成したことのない方、プログラミングの経験がない方にとって、とてもハードルが高く感じられるものがほとんどです。

『ビジネスパーソンのためのExcelマクロ入門講座』では、実務で本当に使えるExcelマクロを作るのに、まずは絶対に、知っておかなかければいけない基礎の基礎を、ビジネスパーソン向けに凝縮してお伝えします。

本講座で扱う、Excelマクロの基礎知識が習得できれば、市販のExcelマクロ本などに書いてあることが理解しやすくなり、業務の効率化が図れるようになるでしょう。

私は、プログラミングの知識はまったくない状態から、独学でマクロを習得しました。

そんな経験も踏まえ、マクロを勉強しはじめた頃に是非とも知っておきたかったポイントを凝縮してお伝えする、少人数限定講座です。
]]>
        <![CDATA[▼講座タイトル
『ビジネスパーソンのためのExcelマクロ入門講座』

▼開催日時
2012年3月3日 土曜日
13時30分～17時30分

▼会場
<a href="http://www.yamori.jp/modules/tinyd2/index.php?id=10" target="other">ちよだプラットフォームスクウェア</a>
東京都千代田区神田錦町3‐21
（東京メトロ竹橋駅より徒歩2分、神保町駅より徒歩7分、大手町駅より徒歩8分）

▼受講対象者（以下のすべてに該当する方）
・Excelマクロを習得したいと考えているビジネスパーソン
・キーボードからアルファベットの入力が苦労なく行える方
・Excelのワークシート上でIF関数を利用した数式を作れる方
・Excel 2010またはExcel 2007のインストールされているWindowsパソコンをご持参いただける方
<span class="small">上記の条件に合致しない方の場合、<a href="/itnote/archives/014579.php">マンツーマンレッスン</a>で対応させていただきます。</span>

▼これまでに受講いただいた方の声
・<a href="/itnote/archives/017696.php">自分で作成したマクロを動かせたときは本当に嬉しかった</a>
・<a href="/itnote/archives/013954.php">Excelについてより興味を持って学ぶきっかけに</a>
・<a href="/itnote/archives/013913.php">シートをまとめるマクロがゴールで、満足度も高く</a>
・<a href="/itnote/archives/014561.php">講座を受けてVBA入門書に書かれていたことを納得</a>
・<a href="/itnote/archives/017690.php">理解できなかったマクロ参考書を読み返してみたい</a>
・<a href="/itnote/archives/013930.php">VBA独学派の人も、3時間の無駄のない講座で書籍の理解がスムーズに</a>
・<a href="/itnote/archives/017724.php">独学よりも圧倒的に情報量が多く、受講できてよかった</a>
・<a href="/itnote/archives/013950.php">独学で学んだマクロの知識が整理された。より実務に役立つ内容を</a>
・<a href="/itnote/archives/017673.php">独学でよくわからなかった部分が明確に</a>
・<a href="/itnote/archives/017681.php">マクロが始めてでも、十分ついていける内容</a>
・<a href="/itnote/archives/013966.php">マクロをもっと操作したかったが、内容的には満足</a>
・<a href="/itnote/archives/017747.php">あっという間に時間が過ぎ、内容的にも充実</a>
・<a href="/itnote/archives/017694.php">マクロを使ったことがなくても、Excelの基礎知識があればOK</a>
・<a href="/itnote/archives/013920.php">ぎっしり、内容的にすごく濃い3時間</a>
・<a href="/itnote/archives/013932.php">エクセルマクロの始めの一歩を、躓かず踏み出すのにちょうどよい</a>
・<a href="/itnote/archives/014574.php">マクロ初心者の学習基盤としていい構成</a>
・<a href="/itnote/archives/013915.php">丁度良い3時間で、エクセルマクロの基礎の基礎から。ただし、話のスピードは速い</a>
・<a href="/itnote/archives/017687.php">テキパキと進む講座から足りないものが見えた</a>
・<a href="/itnote/archives/014564.php">スピーディーでありながら、丁寧な講義</a>
・<a href="/itnote/archives/017740.php">講師が実務経験者だからこその内容</a>
・<a href="/itnote/archives/013914.php">少人数で質問しやすく、ほかの受講者の使い方も参考に</a>

▼受講料
1万4,000円 
<span class="small">お申込み後3営業日以内にお振込みをお願いします。
振込先口座はお申込み後にメールにてご連絡させていただきます。
以前に『ビジネスパーソンのためのExcelマクロ入門講座』を受講したことのある方の再受講は受講料を半額の7,000円とさせていただきます。</span>

<span class="small">▼キャンセルについて
受講料のお振込み後にキャンセルされる場合は
以下のキャンセル料をお願いしております。
・講座の1週間前までにご連絡いただいた場合
　受講料の25%
・講座の1週間前を過ぎてご連絡いただいた場合
　受講料の100%
上記のキャンセル料を差し引いた額を返金させていただきます。</span>

<span class="small">▼講座の振替受講
『ビジネスパーソンのためのExcelマクロ入門講座』は
月一回程度は開催しております。
万一ご都合が悪くなられた場合
講座の1週間前までにご連絡いただければ
キャンセルではなく振替受講という形でも対応させていただきます。</span>

▼講座の主な内容
・マクロとは？VBAとは？VBEとは？
・ビジネスパーソンが作るマクロの割り切り
・絶対に知っておくべき、VBEの使い方
・マクロ記録のおすすめしたい使い方
・VBAの関数と演算子
・変数とは
・条件分岐とは
・ループ処理とは
・条件付き書式のようなマクロ
・一応、オブジェクトの話
・条件付き書式のようなマクロ
・ワークシートを操作する
・複数のシートをまとめるマクロ

<span class="small">▼本講座では扱わない内容
限られた時間ですので、以下の内容は本講座では扱いません。
・オブジェクト変数
・配列
・ファイル処理
・For Each ～ Next文、Do ～ Loop文
・Select Case文
・On Error文
・イベントプロシージャ
・Functionプロシージャ

▼講座当日にご持参いただくもの
・Excel2010 または Excel2007のインストールされているパソコン
・筆記用具

▼講師
伊藤潔人
<span class="small">「インストラクターのネタ帳」管理人・Microsoft MVP for Excel</span>

▼最大受講人数
6名様

▼注意点
・Excel 2010またはExcel 2007のインストールされているパソコンを、必ずご持参ください。2003以前でのExcelでの受講はご遠慮いただいております。
・プロのプログラマーになることを目標としたセミナーではありません。
・アルファベットの入力に苦労する方、ExcelのワークシートでIF関数を使えないレベル方の場合、限られた時間では習得困難な可能性が高いため、誠に恐縮ですがご遠慮ください。
<span class="small">（スキル的に難しそうと感じる方、Excel 2010・2007のインストールされたご持参可能なWindowsパソコンをお持ちでない方には、<a href="/itnote/archives/014579.php">マンツーマンレッスン</a>の形で対応させていただきます。）</span>

▼お申込みの流れ
1.お申込みフォームに必要事項を入力後、送信してください。（仮申込）

2.受講料のお振込み先などを記載したメールを24時間以内に返信させていただきます。<span class="small">（お申込みフォームからの仮申込後24時間を経過しても返信がない場合、お使いのメールソフトの「迷惑メール」フォルダなどをご確認ください）</span>

3.受講料を3営業日以内にお振込みください。

4.受講料のお振込みを確認後メールを返信させていただきます。（正式申込完了）

<strong><a href="https://docs.google.com/spreadsheet/viewform?formkey=dENfS0daOVV6akhSaFpUV01UZmpJZXc6MA#gid=0">● お申込みフォーム ●</a></strong>
<span class="small">スキル的に本講座の受講が難しいと判断されるときにはお断りさせていただく場合があることお申込みいただいたタイミングによっては、キャンセル待ちとして受付させていただく可能性があることを、ご了承ください。</span>]]>
    </content>
</entry>

<entry>
    <title>ダブルクォートを入力するには </title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017752.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17752</id>

    <published>2012-02-10T01:57:28Z</published>
    <updated>2012-02-10T03:35:41Z</updated>

    <summary> 対象：Excel2003, Excel2007, Excel2010 VBA（...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="Excel エクセルの使い方-マクロ/VBA" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：Excel2003, Excel2007, Excel2010
</div>

VBA（Visual Basic for Applications）でマクロなどを作成しはじめた頃に、ぶつかる壁がいくつかあります。

その一つがダブルクォート・ダブルクォーテーションの入力です。

VBAでは、文字列をダブルクォートで括るのが大原則の一つとしてあるため、ダブルクォートそのものを文字列として扱うにはどうすればいいのか戸惑うわけです。

結論から言うと、ダブルクォートそのものを文字列として扱うためには、「""」とダブルクォートを2つ並べます。

VBAのコードの中でダブルクォートを「""」と2個並べておくと、実際には文字列としてのダブルクォート「"」1個が入力されることになります。]]>
        <![CDATA[いくつかサンプルをご紹介しておきます。
<div class="operation">
▼ダブルクォートを数式に入力する
Sub ダブルクォートのサンプル1

　Range("A1").Formula = "=IF(B1>=80,""合格"",""不合格"")"

End Sub
</div>
上記のマクロを実行するとA1セルに
「=IF(B1>=80,"合格","不合格")」
という数式が入力されます。

VBAの中のコードで「""」とダブルクォート2個jが、セルに入力された数式では「"」とダブルクォート1個になるので、
「""合格"",""不合格""」が「"合格","不合格"」となります。

数式ではなくセルにダブルクォートを入力する場合も考え方は同じです。
<div class="operation">
▼ダブルクォートをセルに入力する
Sub ダブルクォートのサンプル2

　Range("A1").Value = "ダブルクォート""をセルに入力します。"

End Sub
</div>

上記のマクロを実行すると
「ダブルクォート"をセルに入力します。」
という文字列がA1セルに入力されます。

ですから、ダブルクォートで括られた文字列をセルに入力する場合は以下のようなコードになります。
<div class="operation">
▼ダブルクォートをセルに入力する
Sub ダブルクォートのサンプル3

　Range("A1").Value = """ダブルクォートで文字列が括られます。"""

End Sub
</div>

結果的にダブルクォートが3つ並ぶことになるので、見慣れないとどれが何のダブルクォートなのか戸惑うかもしれませんが、
「"""ダブルクォートで文字列が括られます。"""」
の一番外側のダブルクォート
「<strong>"</strong>""ダブルクォートで文字列が括られます。""<strong>"</strong>」
が、VBAで文字列を指定するときに文字列を括るダブルクォートで、その中のダブルクォート2個
「"<strong>""</strong>ダブルクォートで文字列が括られます。<strong>""</strong>"」
が、セルの中に値として入力されるダブルクォートです。

最初の数式の例で、変数と文字列結合演算子「&」を使って文字列を入れるようにする場合、以下のようなコードになります。
<div class="operation">
▼ダブルクォートを数式に入力する
Sub ダブルクォートのサンプル4

　Dim s1 As String
　Dim s2 As String

　s1 = "合格"
　s2 = "不合格"

　Range("A1").Formula = _
　　　　"=IF(B1>=80,""" & s1 & """,""" & s2 & """)"

End Sub
</div>

上記のマクロを実行するとA1セルに
　=IF(B1>=80,"合格","不合格")
という数式が入力されます。

「Range("A1").Formula = 」
につづく
「"=IF(B1>=80,""" & s1 & """,""" & s2 & """)"」
のうち、
「<strong>"</strong>=IF(B1>=80,""<strong>"</strong> & s1 & <strong>"</strong>"",""<strong>"</strong> & s2 & <strong>"</strong>"")<strong>"</strong>」
が、VBAのコード内で文字列を括るためのダブルクォートで、
「"=IF(B1>=80,<strong>""</strong>" & s1 & "<strong>""</strong>,<strong>""</strong>" & s2 & "<strong>""</strong>)"」
がセルに入力される数式で使われるダブルクォートです。

ちなみに、この例までお話しすると、
「IF関数の第1引数のB1をCellsで指定する場合どうすればいいのでしょうか」
といったご質問をいただくことも多いのでついでに。
<div class="operation">
▼VBAで数式を入力する
Sub 数式を入力するサンプル

　Dim s1 As String
　Dim s2 As String

　s1 = "合格"
　s2 = "不合格"

　Range("A1").Formula = _
　　　　"=IF(" & Cells(1, 2).Address(False, False) & ">=80,""" & s1 & """,""" & s2 & """)"

End Sub
</div>
というコードでCellsプロパティを使ってVBAから
「=IF(B1>=80,"合格","不合格")」
という数式を入力することができます。]]>
    </content>
</entry>

<entry>
    <title>マイナス記号を円マークの前に表示する－\#,##0;-\#,##0</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017750.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17750</id>

    <published>2012-02-08T23:38:25Z</published>
    <updated>2012-02-09T01:03:23Z</updated>

    <summary> 対象：Excel2003, Excel2007, Excel2010 「エクセ...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="Excel エクセルの使い方-書式-表示形式" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：Excel2003, Excel2007, Excel2010
</div>

「エクセル マイナスを円マークの前に表示」
という検索が行われていました。

Excelのセルで通貨書式を設定しているときに、マイナスの値が入力された場合
「\-1,234」
のような表示となります。

円マークの後ろにマイナス記号が表示されています。

この円マークとマイナス記号の順序を逆にして
「-\1,234」
と表示させる方法を探している方による検索でしょう。]]>
        <![CDATA[そもそも、マイナス記号が円マークの前に表示されるのが正しいのかどうかという議論はあるでしょうけれど、ユーザー定義書式を設定すれば、この検索をなさった方の希望どおりの表示となります。
<div class="operation">
▼操作手順：マイナス記号が円マークの前に表示されるようにする
［Ctrl］キー＋［1］キーを押す
　↓
［セルの書式設定］ダイアログ
　－［表示形式］タブをクリック
　↓
［分類］欄で
　「ユーザー定義」を選択
　↓
［種類］欄に
　「\#,##0;-\#,##0」と入力
　↓
［セルの書式設定］ダイアログ
　－［OK］ボタンをクリック
</div>

［セルの書式設定］ダイアログ－［表示形式］タブ－［種類］欄に入力した
「\#,##0;-\#,##0」
の「;」（セミコロン）の後ろ「-\#,##0」がマイナスの値・負の値のときの表示形式を意味しています。

通常通貨書式を設定した場合は
「\-#,##0」
のように円マークの後ろにマイナス記号が表示されていますが、これを
「-\#,##0」
とマイナス記号を円マークの前にすることで、この書式が設定されているセルではマイナス記号が円マークの前に表示されるようになります。

ちなみに、［セルの書式設定］ダイアログ－［表示形式］タブ－［分類］欄で「通貨」を選択して［記号］欄からさまざまな通貨記号を選んでみると、マイナス記号と通貨記号の位置関係は、通貨記号と国によってさまざまであることを感じられると思います。

<ul><li><a href="/itnote/archives/003339.php">表示形式-ユーザー定義「\#,##0.00;[赤]\-#,##0.00」の意味は？</a></li><li><a href="/itnote/archives/003728.php">円マーク・通貨記号を全角で表示する−!￥</a></li></ul>

<div class="comments-head">関連語句</div>
<span class="small">マイナスは円マークの前</span>]]>
    </content>
</entry>

<entry>
    <title>重複しないランダムな数値・乱数を作成するマクロ</title>
    <link rel="alternate" type="text/html" href="/itnote/archives/017748.php" />
    <id>tag:www.relief.jp,2012:/itnote//8.17748</id>

    <published>2012-02-08T00:35:30Z</published>
    <updated>2012-02-08T01:34:25Z</updated>

    <summary> 対象：Excel2003, Excel2007, Excel2010 乱数を発...</summary>
    <author>
        <name>kiyotoi</name>
        
    </author>
    
        <category term="Excel エクセルの使い方-マクロ/VBA" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.relief.jp/itnote/">
        <![CDATA[<div class="product">
対象：Excel2003, Excel2007, Excel2010
</div>

<a href="/itnote/archives/013890.php">乱数を発生させるマクロ</a>をご紹介しました。

For Each ～ Nextループ文の中でRnd関数を使って乱数を発生させているだけのシンプルなマクロです。

このマクロでは重複した値が生成される可能性がありますが、重複しないランダムな数値・乱数が欲しいということも、よくあります。]]>
        <![CDATA[そんなマクロをご紹介しておきます。
<div class="operation">
▼重複しないランダムな数値・乱数を作成する

Sub 重複しない整数を入力する()

　Dim c As Range
　Dim cnt As Long
　Dim num As Long
　Dim flg() As Boolean

　If TypeName(Selection) <> "Range" Then Exit Sub

　cnt = Selection.Count

　ReDim flg(1 To cnt)

　Randomize

　For Each c In Selection
　　Do
　　　num = Int(Rnd * cnt) + 1
　　　If flg(num) = False Then
　　　　flg(num) = True
　　　　Exit Do
　　　End If
　　Loop
　　c.Value = num
　Next

End Sub
</div>

セルを選択しておいてから上記のマクロを実行すると、「1」から選択されているセルの個数までの整数が重複しないように入力されます。

重複しない整数を作成しているのが
　　Do
　　　num = Int(Rnd * cnt) + 1
　　　If flg(num) = False Then
　　　　flg(num) = True
　　　　Exit Do
　　　End If
　　Loop
の部分です。

Do Loopに入ってすぐ
　　　num = Int(Rnd * cnt) + 1
で、ランダムな整数を作成して変数・numに格納します。

次にそのインデックス番号を持った配列・flgが「False」の場合に
　　　If flg(num) = False Then
配列・flgを「True」にして
　　　　flg(num) = True
Do Loopを抜けています。
　　　　Exit Do

逆に言えば、そのインデックス番号を持った配列・flgが「True」である限り、Do Loopが繰り返され、重複した整数が作られないということになります。

実際にセルに値を入力するのはDoループ文を抜けた直後の
　　c.Value = num
です。

セルが選択されていない場合にエラーとなってしまうのを避けるため
　If TypeName(Selection) <> "Range" Then Exit Sub
で、選択されているのがセルでなければマクロを終了しています。

選択されているセルの個数をカウントして
　cnt = Selection.Count
セルの個数を最大値とした配列・flgを準備しています。
　ReDim flg(1 To cnt)

また、乱数を発生するときの定番処理
　<a href="/itnote/archives/013898.php">Randomize</a>
をFor Each ～ Nextループに入る前に行っています。]]>
    </content>
</entry>

</feed>

