SSブログ
Excel VBA ブログトップ

Excel フォームによるVBA管理 [Excel VBA]

■目的
 Excelのバージョンが上がった場合でも、これまでのマクロを容易に使用できる
 管理方法のメモ

■アプローチ
 フォームを作成し、フォーム上のボタンにマクロを記載する
 作成したフォームを、標準モジュールに登録する。
 標準モジュールをリボンに登録し、読み出せるようにする。

 ※イメージ写真

■その他
 
タグ:Excel 効率化
nice!(0)  コメント(0) 
共通テーマ:仕事

フォームを使ってみる [Excel VBA]

■目的
・フォームを使う方法を習得する。

■フォーム作成方法


 <ファイル拡張子>
  *.bas ・・・ 標準モジュール
  *.frm ・・・ フォーム モジュール(テキスト ファイル)
  *.frx ・・・ フォーム モジュール(バイナリ ファイル)
nice!(1)  コメント(0) 

シリアル データ通信 [Excel VBA]

■目的
・アルディーノを使用してADC(ADS1115)で読み取った電圧値をPCへ転送する方法を探る。

■通信方法(その1)
・easycommを使用して通信する方法あり。
 Web 上に『 easycomm_1.84』で圧縮ファイルあり。
・圧縮ファイル中身 
  ec.bas ・・・標準モジュール
  ecDef.bas ・・・標準モジュール
  ecManual.xls
  readme.txt

・上記、2種類の標準モジュールをExcelにインポートする。
ーーーーーーーー
画像貼り付け予定
ーーーーーーーー
・VBAでプログラムを作成し実行することで、
 ADCの電圧値をPCへ取り込みグラフ作成ができることを確認した。

ーーーーーーーーーーーーーーーーーーーーーーー
 電圧表示 / グラフの写真を張り付ける予定
ーーーーーーーーーーーーーーーーーーーーーーー

 <サンプルプログラム>
Private Sub CommandButton1_Click()
'①初期設定
ec.COMn = 3 'COM4を指定します
ec.Setting = "9600,n,8,2" '通信条件(ボーレート,パリティビット数,データビット数,ストップビット数)の設定
ec.HandShaking = ec.HANDSHAKEs.RTSCTS '通信ハンドシェークの設定
ec.Delimiter = ec.DELIMs.CrLf 'データの区切りを示す文字列を設定します

'②データの送信
ec.OutBuffer = 100& * 1024& '現在処理の対象になっているポートの送信バッファを100kBに設定します
ec.AsciiLine = "*TRG" '"*TRG"という文字列をデリミタ付きで送信します.

'③データの受信
A$ = ec.AsciiLine 'デリミタの手前までの受信文字列をA$に代入します.
ec.InBufferClear '受信バッファをクリア

'④受信データの表示
MsgBox A$

'⑤ポートを閉じる
ec.COMn = -1 '終了処理
End Sub

Private Sub CommandButton2_Click()

Dim MeasCount As Long '計測回数カウンタ
Dim ReadData As String '入力した値


ec.COMn = 3 'COMポートのオープン(COMポート番号)
ec.Setting = "9600,n,8,2"  'COMポートの設定(通信速度,パリティ,データビット,ストップビット)

Range("B10") = "AD1" 'ワークシートのB10 セルにAD1 と表示
Range("C10") = "AD2" 'ワークシートのB10 セルにAD2 と表示
Range("D10") = "AD3" 'ワークシートのB10 セルにAD3 と表示
Range("E10") = "AD4" 'ワークシートのB10 セルにAD4 と表示
MeasCount = 1 '計測回数カウンタ 初期化


Do

   ec.OutBuffer = 100& * 1024& '現在処理の対象になっているポートの送信バッファを100kBに設定します
   ec.AsciiLine = "*TRG" '"*TRG"という文字列をデリミタ付きで送信します


   Range("A10").Offset(MeasCount, 0) = MeasCount   '計測カウンタ値をA10列に書込み
   
   ReadData = ec.AsciiLine 'AD1 データ読み込み
       ReadData_i = Val(ReadData) '文字データを数値データに変換
   Range("A10").Offset(MeasCount, 1) = ReadData_i   'AD1の値をA11列に書込み

   
   
   ReadData = ec.AsciiLine 'AD2 データ読み込み
      ReadData_i = Val(ReadData)
   Range("A10").Offset(MeasCount, 2) = ReadData_i ' ‘ワークシート書込み
   

   ReadData = ec.AsciiLine 'AD3 データ読み込み
      ReadData_i = Val(ReadData)
   Range("A10").Offset(MeasCount, 3) = ReadData_i ' ‘ワークシート書込み


   ReadData = ec.AsciiLine 'AD4 データ読み込み
      ReadData_i = Val(ReadData)
   Range("A10").Offset(MeasCount, 4) = ReadData_i ' ‘ワークシート書込み


   MeasCount = MeasCount + 1 'カウンタに1を加算
 Loop

End Sub

Private Sub CommandButton3_Click()

 ec.COMnClose = 0 'COMポートのクローズ
 MsgBox " COM3 CLOSED "    '停止メッセージ表示
 End

End Sub

Private Sub CommandButton4_Click()

 Cells.Select '全てのセルを選択
 Selection.ClearContents 'セルを削除
 Range("A10").Select   'セル(A11)に移動

End Sub

nice!(0)  コメント(0) 

散布図の変更 [Excel VBA]

■目的
・所望の散布図グラフを効率よく作成する

■アプローチ
<グラフの作成方法>
・最初に『グラフ ツール』⇒散布図を選択しグラフを作成する。
・そのグラフをベースに、下のグラフ仕様の変更をおこなう。
・グラフの変更はVBAプログラムでおこなう。
・VBAプログラムは、Excelの『Active X コントロールボタン』のコマンド ボタンに登録する。
・今後は、このボタンを押下することで所望のグラフフォーマットトで散布図を作成する。

<グラフ仕様>
  グラフ内 フォント Meiryo UI
  グラフ内 文字サイズ 12
  X軸文字サイズ 14
  Y軸文字サイズ 14
   X軸最小 0
   X軸最大 40
   Y軸最小 0
   Y軸最大 300
    X軸目盛 2
    Y軸目盛 50
  グラフ外枠サイズ 横 200 * 17 / 7
  グラフ外枠サイズ 縦 100 * 11 / 3
  凡例位置 右
  グラフ線の補完 空白セルの補完
  近似曲線 消去
  グラフ枠 消去
  グラフ設定 移動する/大きさ変更しない

<VBAプログラム>
	
	
Private Sub CommandButton1_Click()

    Dim ch As ChartObject
    For Each ch In ActiveSheet.ChartObjects
        'Debug.Print ch.Name
            ch.Chart.ChartArea.AutoScaleFont = True
            ch.Chart.ChartArea.Font.Name = "Meiryo UI"
            'ch.Chart.ChartArea.Font.Name = "MS Pゴシック"
            ch.Chart.ChartArea.Font.Size = 12
            
            ch.Chart.Parent.Width = 200 * 17 / 7
            ch.Chart.Parent.Height = 100 * 11 / 3
            
            ch.Chart.Axes(xlCategory).MinimumScale = 0  'X軸 最小値
            ch.Chart.Axes(xlCategory).MajorUnit = 2
            ch.Chart.Axes(xlCategory).MaximumScale = 10  'X軸 最大値
            ch.Chart.Axes(xlValue).MinimumScale = 0  'Y軸 最小値
            ch.Chart.Axes(xlValue).MajorUnit = 50
            ch.Chart.Axes(xlValue).MaximumScale = 300  'Y軸 最大値         
            'ch.Chart.Axes(xlValue).MajorUnit = 0.2

            'ch.Chart.legend.Position = xlLegendPositionBottom  '凡例表示(下)xlLegendPositionBottom 下
            ch.Chart.legend.Position = xlLegendPositionRight   '凡例表示(右)xlLegendPositionRight 右
            ch.Chart.Axes(xlCategory).TickLabels.Font.Size = 14  ' X軸のフォントサイズを設定する xlCategory
            ch.Chart.Axes(xlValue).TickLabels.Font.Size = 14     ' Y軸のフォントサイズを設定する xlValue
            
            ch.Chart.ChartArea.Border.LineStyle = 0  'グラフ枠の消去

            ch.Placement = xlMove
            
    Next


End Sub

nice!(0)  コメント(0) 
Excel VBA ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。