|
Excel(2010)で、VBAでフォームを作成し、入力画面を作り、セルに
転記しようとしています。
まずシートは1「sheet1」、2は「データ」、3は「リンク元」としています。
次に、VBAの「転記ボタン」の部分を以下のようにしています。
------ここから-------
Private Sub 転記ボタン_Click()
Dim myrow As Integer
With Sheets("List").Range("A1048576").End(xlUp)
If .Range("A2").Value = "" Then
myrow = 2
Else
myrow = .Range(Cells(.Rows.Count, 1). _
End(xlUp).Address).Row + 1
End If
.Cells(myrow, 1).Value = 番号.Value
.Cells(myrow, 2).Value = 氏名.Value
(略)
.Cells(myrow, 50).Value = 備考.Value
End With
End Sub
------ここまで-------
該当のフォーム(UserForm1)の中には、
「チェックボックス」(フレームにてグレープしている物もあれば、
グループにしていない物もあります)や、「ラジオボタン」もあります。
ここで問題なのが、上記スクリプト部分に、
(以下は、ラジオボタン。2つのうち、いづれかのみ選択)
例→ .Cells(myrow, 5).Value = 男性.Caption
例→ .Cells(myrow, 6).Value = 女性.Caption
と、した場合、「男性」にチェックを入れても、「両方チェックを入れない場合」でも、
セルに「男性」と「女性」が転記されてしまいます。
これは例えば、「チェックボックス」でも同様で、例(以下)で次ぎのようにすると、
.Cells(myrow, 7).Value = りんご.Caption
.Cells(myrow, 8).Value = バナナ.Caption
.Cells(myrow, 9).Value = メロン.Caption
と、「好きな食べ物にチェックを入れる」を例にした場合でも同様です。
一つしかチェックされない場合でも、3つチェック無しの場合でも、全て転記されてしまいます。
色々と、試行錯誤で調べた結果、
「チェックボックス」や「ラジオボタン」の場合、選択した値を「FALSE」か「TRUE」で返す
のではないか?と感じており、ここで、「任意の文字が無理ならば、sheet3つ目の“リンク元”」
に、コピー元として、「データ」シートをコピー先とすれば良いのかと思いました。
検索して色々としらべましたが、
Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet2").Range("C2")
がありましたが、これは、「データ」シートの1行目以降に最後尾より追加し転記する。
といった場合、いままで作ってきた「.Cells(myrow, ●).Value =」は無駄になってしまうのかと
分からなくなってしまいました。
現在の状態として、
ラジオボタン(フレーム化)3つ1組。
ラジオボタン(フレーム無し)3つ1組。
ラジオボタン(フレーム無し)2つ1組。
チェックボックスはそれぞれ多数。という状態です。
お知恵をお借りしたく、宜しくお願い致します。
|
|