|
▼VBA初心者 さん:
おはようございます。
>次のような処理がしたいのですが、うまく動きません
いくら初心者でもユーザーフォームの基本的な動作は
学ばなければ動くものも動きませんよ!!
>2.特定のシートをコピーし、取得した値+日付をシートネームとする
↑一言で言うと、やりたいことはこれですね!!
これを実現する材料として、ユーザーフォームにコンボボックスを
貼り付けてある、ということですね!!
>Private Sub UserForm_Initialize()
このプロシジャーは、ユーザーフォームの初期設定を行う
プロシジャーです。
コンボボックスの選択メンバを登録するのは、良いですが、
まだ、ユーザーが何もしていないのに
シートをコピーするコードが記述されていますが、これいかに?
(もっとも sheetnameには何も入っていないので何もしませんが)
まず、仕様を明確しましょう。コードなんかその後です。
まず、ユーザーフォーム(UserForm1)に配置するコントロールは、コンボボックスだけですか?
>取得した値+日付をシートネームとする
取得した値というのは、コンボボックスで選択したデータのことですね!!
日付を InputBox("作成日を入力して下さい") で取得しているようですが、
このユーザーフォーム上にテキストボックスを配置して、日付入力をしてもらう方が
簡単ですよね?
よって、ユーザーフォーム上にテキストボックスを配置してください
(TextBox1)。
品種の選択を行い、テキストボックスに日付を入力し、
ユーザーフォーム上にあるコマンドボタンをクリックしたら、
入力されたデータを基に
>特定のシートをコピーし、取得した値+日付をシートネームとする
これを行えば良いですね
ということで ユーザーフォーム上にコマンドボタンも配置してください
(CommandButton1)
1 品種リストの作成
品種と言うデータをコンボボックスで選択させるのですが、
この品種データをコードの中に直接
myData(0, 0) = "25RF 80mA"
このように設定していますが、これだと
品種が増えたり、減ったり、内容に変更があったりする度に
プログラムコードを修正しなければなりませんよね?
データの増減などでは、プログラムを触らなくても良いような
つくりにしなければなりません。
品種リストを適当なワークシートを作成し、
そこに作成するようにします。
例
シート名 品種リスト
A
1 品種
2 25RF 80mA
3 23RR 25mA
・
・
一行目は、データではなく、項目名にてください。
Excelでは、そのようにしておく方が何かと便利ですから・・・・。
このように品種のデータをシートに配置しておけば・・・、
Private Sub UserForm_Initialize()
Dim rng As Range
With Worksheets("品種リスト")
Set rng = .Range("a2", .Cells(.Rows.Count, "a").End(xlUp))
End With
If rng.Row > 1 Then
With ComboBox1
.Clear
.Style = fmStyleDropDownList
.List = rng.Value
End With
End If
End Sub
こんなコードでコンボボックスに選択メンバを登録できます。
まずは、コンボボックスに選択できる品種を登録するところまで
正常に作動するようにしてみください。
|
|