• 締切済み

マクロ クラスがわかりません

マクロの勉強を少ししてみました。独学でyoutubeや本、サイトを使って勉強していました。実務でも活かせるようになり、変数、条件分岐、繰り返し、functionなどが順番にわかるようになり、右も左もわからない時と比べて、少し綺麗なコードも書けるようになりました。今はクラスでつまずいています。 chatGPTに例題を出してもらいながら読んでみても何をやっているのかさっぱりわからず...。かみくだいて説明させてみると、保守性と再利用性があるということをchatGPTの受け売りで知りました。メリットがある以上やはり使いこなしたいです。 難しい質問になりますが、例題と共に教えてもらえないでしょうか。

みんなの回答

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

こちらに同じ動作をするものでクラスを使ったものと使わなかったものと両方が取得できます。 実例として参考にしてみてはいかがでしょう。 ExcelVBAでカレンダーコントロールを自作する https://ateitexe.com/excel-vba-calendar-control/ 動的にイベントを作成するのにクラスを使う事例はよく見かけます。他ではあまりクラスを使ったのは見かけたことがないような気もします。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

凄く単純な例です。簡単にいうとひな形みたいなものです。 「VBA クラス」 で検索して色々見てみるといいと思います。 Class1のコード Private mName As String Private mAge As Long 'データを取り出す Public Property Get Name() As String Name = mName End Property 'データをセットする Public Property Let Name(ByVal UName As String) mName = UName End Property Public Property Get Age() As Long Age = mAge End Property Public Property Let Age(ByVal UAge As Long) mAge = UAge End Property Public Sub mMsg() MsgBox "これは" & mName & "のデータです: " & mAge & "才" End Sub 実行コード Sub Test() Dim UserData1 As New Class1 Dim UserData2 As New Class1 'データのセット With UserData1 .Name = "太郎" .Age = 20 End With With UserData2 .Name = "次郎" .Age = 30 End With 'クラスの中の実行部分を呼び出す UserData1.mMsg UserData2.mMsg '直接データを呼び出す MsgBox UserData1.Name MsgBox UserData2.Name End Sub

関連するQ&A