Excelのセル背景色に指定された色コードを確認するマクロ

▶ in ExcelVBA posted 2016.04.20 Wednesday / 04:58

Excelのセル背景色を、メッセージボックスで表示させるVBAの備忘録です。


確認したいセルをアクティブにして実行すると、10進数・16進数で表示します。

 

2016-04-20_VBA




Sub セルの背景色確認()

'アクティブセルの背景色の色コードを表示する
Dim R As Long
Dim G As Long
Dim B As Long
Dim Color As Long
Dim RGB

Color = ActiveCell.Interior.Color

R = Color Mod 256
G = Int(Color / 256) Mod 256
B = Int(Color / 256 / 256)

'10進数
RGB = "RGB(" & R & ", " & G & ", " & B & ")"
MsgBox RGB

'16進数
MsgBox "#" & Right("0" & Hex(R), 2) & _
Right("0" & Hex(G), 2) & _
Right("0" & Hex(B), 2)

End Sub

ExcelVBAの備忘録~コメントの追加とサイズ調整~

▶ in ExcelVBA posted 2016.04.15 Friday / 04:18

ExcelVBAで、コメントを追加してサイズを自動調整する方法です。

 

コメントを追加しただけだとあまり見栄えが良くない…
ので、サイズを自動調整するか直接サイズを指定します。




Sub コメント挿入()

'A1セルにコメントを追加する
Range("A1").AddComment "コメント1行目" & vbCrLf & "コメント2行目" _
& vbCrLf & "コメント3行目は少し長めにしてみた"

'A1セルのコメントサイズを自動調整する
Range("A1").Comment.Shape.TextFrame.AutoSize = True

End Sub



何も指定しないとき
2016-04-15_com1

 

自動調整したとき
2016-04-15_com2

 

自動調整ではなく、コメントサイズを指定する場合は以下のようにする。

 

Range("A1").Comment.Shape.Width = 130
Range("A1").Comment.Shape.Height = 30

 

幅130、高さ30で指定したとき
2016-04-15_com3

 

 

ExcelVBAで、

 

  • コメントを挿入する
  • 挿入したコメントのサイズを自動調整する
  • コメントのサイズを手動で指定する

 

以上、マクロの備忘録でした。

【ExcelVBA】次の非表示モジュール内でコンパイルエラーが発生しました

▶ in ExcelVBA posted 2016.04.05 Tuesday / 04:20

発生条件がよくわからないのですが…

 

ExcelVBAからIEを操作するマクロで発生します。

 

また、Excel2013とExcel2010など、異なるバージョンのExcelで使った後に発生するような気がしています。


VBA実行時にこのエラーが発生する

20160405_vba_01
--------------------------------------------------------------
次の非表示モジュール内でコンパイルエラーが発生しました:Module1
このエラーが発生するのは、一般的に、コードがこのアプリケーションのバージョン、プラットフォーム、またはアーキテクチャと互換性がない場合です。
このエラーを修正する方法については、[ヘルプ]をクリックしてください。
--------------------------------------------------------------


解決策を見つけられずにいましたが、やっと見つけました。

 

次の非表示モジュール内でコンパイルエラーが発生しましたの解決法

 

このエラーが出た時は、「Microsoft Internet Controls」のチェックを一度外して、再度チェックを付け直すことで回避できます。

 

  1. Visual Basicを起動します。
    [ツール]-[参照設定]をクリック
    20160405_vba_02

  2. Microsoft Internet Controlsのチェックを外して[OK]をクリック
    20160405_vba_03

  3. 再度、[ツール]-[参照設定]をクリック
    20160405_vba_04

  4. Microsoft Internet Controlsのチェックを付けて[OK]をクリック
    20160405_vba_05

  5. Visual Basicを閉じます。

【ExcelVBA】重複するデータから重複しないリストを作成する

▶ in ExcelVBA posted 2016.01.22 Friday / 05:24

A列に重複するリスト(元リスト)があり、C列に重複なしのリスト()を作成する場合のサンプルマクロです。


こんなイメージ。

2016-01-21_VBA

 

  • 重複するデータがA列に存在している
  • そのデータから重複分を削除して重複なしのリストを作成したい


今回のサンプルのように、データ件数が少なければどの方法でも問題ないのですが、膨大なデータから重複なしリストを抽出することを考慮した場合、Dictionaryオブジェクトを使うと便利で処理も早いです。

 

ExcelVBAで重複するリストから重複なしのリストを作成して転記する


■サンプルVBA


重複するリストが存在するA列から、重複なしのデータをC列に取り出す場合(上の図)です。

 

--------------------
Sub 重複なしのリスト作成()

    Dim 最終行 As Long
    Dim 辞書 As Object
    Dim リスト As String
    Dim i As Long
    Dim v As Variant
   
    '辞書の作成
    Set 辞書 = CreateObject("Scripting.Dictionary")
    Set Sheetobj = ThisWorkbook.Worksheets("リスト")

    With Sheetobj
   
        最終行 = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = 2 To 最終行
       
            リスト = .Cells(i, "A").Value
           
            '辞書に登録されていない時は
            If Not 辞書.Exists(リスト) Then
           
                '辞書に登録する。
                辞書(リスト) = Empty
            End If
       
        Next i
       
        'keyを配列として取得する
        v = 辞書.Keys
       
        'C2セル以降にキーの配列を出力
        Sheetobj.Cells(2, "C").Resize(UBound(v) + 1).Value = WorksheetFunction.Transpose(v)

    End With
   
    '辞書の解放
    Set 辞書 = Nothing
    Set Sheetobj = Nothing
   
End Sub

--------------------

 

今後VBAを覚えたいという人にVBAについて聞かれた時は、変数名など日本語で表記することが多いです。


後からメンテし易いし、馴染みやすんですよね。

PAGE TOP