• 締切済み

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

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

1.~11.の処理を質問者さんと同じように考えて 同じ機能を欲しいと思った人なんて、世界中に1人も いないと思いますよ。 > 最後までわからない 最後まで面倒見てくれるサイトも物もあるわけがないと 思いますが。 個別の問題点について検索するしかないのでは?結果は まちまちでしょ?検索エンジンが優秀だから、どっかの サイトに全部載ってる必要性が無いですよ。 コードを見ると色々と途中が削られてて、このままだと 文法エラーの状態なので何とも言えません。 私が気になるのは2点、SelectionChange でノンストップ処理 しちゃう点。 下手にセル触れないという。。。 更には、そのたび毎にボタンを追加しちゃう点。 これって終わったらちゃんと後始末してるのでしょうか? それ以前に動的なコントロールの追加は難易度が高いので リストボックスとかで工夫すればいいのに。 そんな質問者さんのプログラム固有の問題点にピンポイント で参考になる情報を事前に提供するのも困難でしょう。 今回の質問でも「結局何が分からないの?」って状態ですし コメントの付けようが無いと思いました。

関連するQ&A

専門家に質問してみよう