EXCELVBAで自動生成
以下のことをやりたいのですが、どのような方法でやればうまくいくでしょうか?
VBAコードを途中まで書いたのですが、最後までわからないので参考になるサイトか物があれば教えて欲しいです
1.修正シートと区分テーブルシートの2つとUserFormがあります。
2.修正シートを開く。
3.修正シートの様々なデータの中から、AAA-030/035-35W-Aのセルをマウスでクリック
4.AAA-030/050-35W-A のデータの中から/前後の030と035の数字を取得。
5.Userform起動
6.区分テーブルシート参照。001~120までのデータが入っている。
7.001~140の間の中から030~035番の間のデータ(KKKK~KKKK)と/の前の数字三桁と後ろの三桁030と035までの番号を見つけ、範囲内のデータ全部取得する。
8.UserFormに、カレンダーのような形式で、縦列に30から35までの数字を書き、横列にAAA~CCCを書く
9.縦と横のラベルの内側にKKKK~KKKKまでの範囲のデータをボタンか何かクリックするもので生成して、UserFormに書き出す。
10.クリックしたい部分をボタンか何かをクリックしたら修正シート起動
11.先ほどのセルのデータがAAA-030/035-35W-Aだったら、AAA-KKKK-35W-Aになる。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strwk As String
Dim retu As Integer
Dim retu2 As Integer
Dim wmk As Variant
Dim wmkk As Variant
Dim colwk As Integer
Dim Larray(1000, 1000) As String
ith = Target.Row
Dim i As Integer
Dim btn As Control
Dim NewBtn(10) As New Class1
If (Target.Column = 4) Then
If (Worksheets("CSV修正シート").Cells(ith, 4) <> "") Then
If (InStr(Worksheets("CSV修正シート").Cells(ith, 4), "-") > "0") Then
wmk = Split(Worksheets("CSV修正シート").Cells(ith, 4), "-")
If (InStr(wmk(1), "/") > 0) Then
s = InStr(wmk(1), "/")
r = Left(wmk(1), s - 1)
l = Right(wmk(1), s - 1)
If (wmk(0) <> 0) Then
i = 1
Do While Worksheets("区分テーブルHID").Cells(i, 1).Value <> ""
If (r = Worksheets("区分テーブルHID").Cells(i, 1).Value) Then
retu = i
End If
If (l = Worksheets("区分テーブルHID").Cells(i, 1).Value) Then
retu2 = i
End If
i = i + 1
Loop
UserForm1.Show vbModeless
colwk = 0
For i = retu To retu2
Set btn = Controls.Add("Forms.CommandButton.1", "button" & i)
With btn
.Top = 5
.Left = 5 + (i - 1) * 120
.Height = 20
.Width = 100
.Caption = "push No." & i
Set NewBtn(i) = New Class1
Set NewBtn(i).Button = UserForm1.Controls("button" & i)
End With
Next
.Height = 60
.Width = 360
.Show
End With