補助線を引く: SetElement

グラフの補助線を引くには、SetElementプロパティを指定します。下の例では、ワークシート"sheet1"の"fig01"チャートで、縦と横の補助線を指定しています。このSetElementプロパティはとても便利で、グラフツール[レイアウト]タブの[ラベル]や[軸]などのグループで設定できるものは全て設定が可能です。

Sub test()
  Dim ws As Worksheet                         'ワークシート型変数の定義
  Dim fig As ChartObject                       'ChartObject型変数の定義

  Set ws = Worksheets("sheet1")            'ワークシート名を指定
  Set fig = ws.ChartObjects("fig01")      'グラフを指定

  fig.Chart.SetElement (msoElementPrimaryCategoryGridLinesMajor)  '縦軸
  fig.Chart.SetElement (msoElementPrimaryValueGridLinesMajor)       '横軸
End Sub

凡例を表示する:HasLegend

グラフに凡例を表示するには、Chart.HasLegendプロパティを指定します。
ここではワークシート"sheet1"に、"fig01"というグラフがあるとします。
このChartObjectについて、Chart.HasLegendプロパティの値をTrueにすると、凡例が表示されます。逆にFalseにすると、凡例が消えます。

Sub test()
  Dim ws As Worksheet                         'ワークシート型変数の定義
  Dim fig As ChartObject                       'ChartObject型変数の定義

  Set ws = Worksheets("sheet1")            'ワークシート名を指定
  Set fig = ws.ChartObjects("fig01")      'グラフを指定

  fig.Chart.HasLegend = True                 '凡例を表示
  ' fig.Chart.HasLegend = False              '凡例を非表示
End Sub

文字の抽出: Mid, Left, Right

文字列の中から特定の文字を抽出したくなることがあります。例えばファイルの名前に特定の文字列を含むものだけを抽出したい時や、データから”高橋”さんを含む行を選択したり、などです。文字列の操作に長けてくると、このような検索、抽出といった操作が楽にできるようになってきます。今回はMid, Left, Right関数を使って、B2セルに書かれている文から特定の文字を抽出します。

Mid, Left, Rightとも、最初の引数には文字列を与えます。Mid関数の次の引数は、何文字目から選択するか、を指定し、3つめの引数で何文字分抽出するかを決めます。Mid(sss, 5, 2)とした場合、5文字目から2文字分を選択することになります。Leftは文字列の左から、Rightは右から指定文字数分を選択します。さて、今回は日本語の文字列から文字を抽出していますが、abcdeのようにアルファベットから抽出するのも同じ形です。半角・全角の違いがあるかと思っていましたが、Left("abcde",2)とすると、日本語と同じく2文字分の"ab"が選択されます。

Sub test()
  Dim sss As String               '文字列変数を宣言
  sss = Cells(2, 2)                 'B2セルの文字列をsssに格納

  Cells(5, 2) = Mid(sss, 5, 2)  '5文字目から2文字文
  Cells(6, 2) = Left(sss, 2)
  Cells(7, 2) = Right(sss, 2)
End Sub

ダブルクリックでセルに色をつける: BeforeDoubleClick


ダブルクリックなどユーザーが何らかの操作をしたときに、その操作に応じてイベントが発生するようにすると、更に操作性を高めることができます。これを指定するには、Worksheetモジュールと呼ばれるモジュールにコードを記述します。VBエディタ上のプロジェクトエクスプローラで、 Microsoft Excel Objects - Sheet1(sheet1)を選びます。デフォルトでは(General)というオブジェクトになっていますが、ドロップボックスからWorksheetを選びます。ここではダブルクリックに対するイベントを操作しますので、右上のプロシージャボックスの中から、BeforeDoubleClickを選びます。このプロシージャの中に記述したコードがダブルクリック時に実行されます。下の例では、セルが空でない場合ColorIndexを6(黄)に指定しています。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  'ダブルクリックしたセルが空で無い場合
  If Target.Value <> "" Then
    'セルの色を黄色に指定
    Target.Interior.ColorIndex = 6
  End If
End Sub










上の例では、色が黄色になったまま元に戻せなくてちょっと不便です。そこで、ColorIndexが既に6になっているセルをダブルクリックした場合のイベントを追加すると、もう少し使い勝手が良くなります。下の例ではColorIndexをxlNoneにすることで、色をはずしています。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  'ダブルクリックしたセルが空で無い場合
  If Target.Value <> "" Then
    'セルの色を黄色に指定
    If Target.Interior.ColorIndex <> 6 Then
      Target.Interior.ColorIndex = 6
    '既に黄色になっている場合は色をはずす
    Else
      Target.Interior.ColorIndex = xlNone
    End If
  End If
End Sub