2017年6月30日

【Excel】セルにハイパーリンクを設定するマクロ


セルにハイパーリンクを設定するには、Hyperlinks.Addメソッドを使います。


たとえば、セルB3にハイパーリンクを設定するには次のように記述します。
Sub SetHyperLink()

    Hyperlinks.Add Range("B3"), "http://hosopro.blogspot.jp/"
    
End Sub

実行結果




2017年6月29日

【Excel】値が入力されているセル(空白セルを含む)の最終行を求めるマクロ


値が入力されているセル(空白セルを含む)の最終行を求めるには、UsedRangeプロパティを使います。



たとえば、このように値が入力されているシートの最終行を求めるには、次のように記述します。
Sub GetLastRow2()

    Dim cnt As Integer
    
    '使用済みセルの行数を取得
    cnt = ActiveSheet.UsedRange.Rows.Count
    
    '最終行を取得
    MsgBox ActiveSheet.UsedRange.Rows(cnt).Row
    
End Sub

まず、ActiveSheet.UsedRange.Rows.Countで使用済みセルの行数を求めます。次にRows(cnt)で使用済みセルの範囲内で最下行からRowプロパティで最終行を求めています。

実行結果



<参考サイト>
http://www.niji.or.jp/home/toru/notes/8.html

2017年6月28日

【Excel】値が入力されているセルの最終行を求めるマクロ


値が入力されているセルの最終行を求めるには、Endプロパティを使います。



たとえば、このように値が入力されているシートの最終行を求めるには、次のように記述します。
Sub GetLastRow()

    MsgBox Range("B3").End(xlDown).Row
    
End Sub
セルB3からEndプロパティで下端の行を求めています。

実行結果

結果は、7行目となりました。

このEndプロパティの弱点として、途中で空白のセルがあるとその直前のセルを最終行として求めてしまいます。ですので、Endプロパティを利用して最終行を求めるには値が連続して入力されていることが条件となります。

2017年6月27日

【Excel】セルの名前を削除するマクロ


セルに付けた名前を削除にするには、NameオブジェクトのDeleteメソッドを使います。



たとえば、セルE9に付けた「売上合計」という名前を削除するには次のように記述します。
Sub DeleteCellName()

    ActiveWorkbook.Names("売上合計").Delete

End Sub

実行結果




2017年6月26日

【Excel】セルに名前を付けるマクロ


セルに名前を付けるには、Nameプロパティを使います。



たとえば、セルE9に「売上合計」という名前を付けるには次のように記述します。
Sub SetCellName()

    Range("E9").Name = "売上合計"

End Sub

実行結果




2017年6月25日

【Excel】フォントの色を設定するマクロ


セルの背景色を設定するには、FontオブジェクトのColorプロパティを使います。



たとえば、セルB2のフォントの色を赤にするには次のように記述します。
Sub SetFontColor()

    Range("B2").Font.Color = RGB(255, 0, 0)
    
End Sub


実行結果




2017年6月24日

【Excel】セルの背景色を設定するマクロ


セルの背景色を設定するには、InteriorオブジェクトのColorプロパティを使います。



たとえば、セルB2の背景色をLightGreenにするには次のように記述します。
Sub SetColor()

    '背景色
    Range("B2").Interior.Color = RGB(144, 238, 144)
    
End Sub

実行結果



TintAndShade 色の明暗

Excel2007以降からは、TintAndShadeプロパティを使って色の明暗を指定することが可能になっています。
TintAndShadeプロパティは、-1 (最も暗い) ~ 1 (最も明るい) の値で指定します。0 (ゼロ) は中間値。

値:0.5
'色の明暗
Range("B2").Interior.TintAndShade = 0.5




値:-0.5
'色の明暗
Range("B2").Interior.TintAndShade = -0.5





2017年6月23日

【Excel】外枠の罫線を引くマクロ


外枠の罫線を引くには、BorderAroundメソッドを使います。




たとえば、このような罫線がひかれた表の外枠に中太線を引くには次のように記述します。
Sub AroundLine()

    Range("B3:E9").BorderAround Weight:=xlMedium
    
End Sub

実行結果




2017年6月22日

【Excel】罫線をクリアするマクロ


セルの罫線をクリアするには、BordersコレクションのLineStyleプロパティで設定します。



たとえば、セルC5~D7までの範囲の罫線をクリアするには次のように記述します。
Sub ClearLine()

    Range("C5:D7").Borders.LineStyle = xlLineStyleNone

End Sub

実行結果




2017年6月21日

【Excel】罫線を引くマクロ


セルに罫線を引くには、BordersコレクションのLineStyleプロパティで設定します。

たとえば、せるB3~D6までの範囲でセルに罫線を引くには次のように記述します。
Sub DrawLine()

    Range("B3:D6").Borders.LineStyle = xlContinuous

End Sub

実行結果




2017年6月20日

2017年6月19日

【Excel】セルにコメントを挿入するマクロ


セルにコメントを挿入するには、AddCommentメソッドを使います。

たとえば、セルB3にコメントを挿入するには次のように記述します。
Sub AddCellComment()
    
    If TypeName(Range("B3").Comment) <> "Comment" Then
        
        Range("B3").AddComment.Text "ハロー"
    
    End If

End Sub
この例では、対象のセルにすでにコメントが挿入されているかをTypeNameを使ってチェックし、未挿入の場合だけAddCommentでコメントを挿入しています。


実行結果




2017年6月18日

【Excel】セルを削除するマクロ


セルを削除するには、Deleteメソッドを使います。



たとえば、セルC4を削除するには次のように記述します。
Sub CellDelete()

    Range("C4").Delete

End Sub

実行結果

削除すると、下のセルが上に詰められます。



2017年6月17日

【Excel】セルを結合するマクロ


セルを結合するには、Mergeメソッドを使います。



たとえば、セルB3~D5の範囲でセルの結合をする場合には、次のように記述します。
Sub CellMerge()

    Range("B3:D5").Merge

End Sub


実行すると、セルに値が入っている場合このような確認のメッセージが表示されますが、問題なければOKを押します。


実行結果

結果はこのようになります。
セルB3にあった「a」だけが残った状態でセルB3~D5まで結合されています。


行単位で結合

選択範囲を行単位で結合するには、MergeメソッドのパラメーターにTrueを設定します。
Sub CellMerge()

    Range("B3:D5").Merge (True)

End Sub

実行結果

B3~D3、B4~D4、B5~D5で結合されています。



<参考サイト>
Range.Merge メソッド (Excel) | Excel VBA リファレンス



2017年6月16日

【Excel】セルに入力されているデータの形式が調べるマクロ


セルに入力されているデータの形式が調べるには、TypeName関数を使用します。



たとえば、セルB3、C3、D3のデータ形式を調べるには次のように記述します。
Sub CheckType()

    MsgBox Range("B3").Text & vbTab & TypeName(Range("B3").Value) & vbCrLf & _
           Range("C3").Text & vbTab & TypeName(Range("C3").Value) & vbCrLf & _
           Range("D3").Text & vbTab & TypeName(Range("D3").Value)

End Sub

実行結果



<参考サイト>
TypeName 関数 | Visual Basic 言語リファレンス


2017年6月15日

【Excel】セルの値だけをコピーするマクロ


セルの値だけをコピーするマクロです。

たとえば、セルB3の値をセルC3にコピーするには次のように記述します。
Sub ValueCopy()

    Range("C3").Value = Range("B3").Value
    
End Sub

実行結果




2017年6月14日

【Excel】セルをコピーするマクロ


セルをコピーするマクロです。

たとえば、セルB3をセルC3にコピーするには次のように記述します。
Sub CellCopy()

    Range("B3").Copy Range("C3")
    
End Sub

このCopyメソッドを実行すると、セルに入力されている値だけでなく書式も一緒にコピーされることに注意してください。


実行結果




2017年6月13日