0

家族に関するデータを記録する Excel ソリューションを作成する必要があります。

  1. フォームは、そのレコードを識別する一意のコード (自動数値) を生成する必要があります。ここでは、両親の名前、苗字、生年月日を尋ねます。これは、シート ( と呼ばれるParents) に記録されます。
  2. 家族には複数の子供が含まれる可能性があるため、これはChildren両親との関係を維持しながら別のシート ( と呼ばれる) に記録する必要があると考えました。

すべての異なるフィールドを対応するセル (マップ) に保存できます。これを取得するために使用するコードは次のとおりです。

Private Sub cmdSave_Click()
ActiveWorkbook.Sheets("Parents").Activate
Range("B2").Select
Do
If IsEmpty(ActiveCell) = False Then
    ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True

'Father
ActiveCell.Value = txtFatherFN.Text
ActiveCell.Offset(0, 1) = txtFatherSN.Text
ActiveCell.Offset(0, 2) = txtFatherLN.Text
ActiveCell.Offset(0, 3) = txtFatherBirthDay.Text
'Mother
ActiveCell.Offset(0, 4) = txtMotherFN.Text
ActiveCell.Offset(0, 5) = txtMotherSN.Text
ActiveCell.Offset(0, 6) = txtMotherLN.Text
ActiveCell.Offset(0, 7) = txtMotherBirthDay.Text
Range("B2").Select
End Sub

そのため、コードを生成し、子との関係を維持する方法が必要です。どんな助けでも大歓迎です!

4

1 に答える 1

0

わかった。私にとってはゆっくりした一日。これがあなたのために書かれたあなたのコードです。また、元のコードを少しクリーンアップして、効率を高めました。

Option Explicit

Private Sub cmdSave_Click()

Dim wks As Worksheet

Set wks = Sheets("Parents")

'assumes headers in First Row, ID is Column A
With wks

    'find next empty row
    Dim lngRow As Long
    lngRow = .Cells(Rows.Count, 1).End(xlUp).Offset(1).Row

    'find next unique Id
    Dim lngID As Long
    lngID = Application.WorksheetFunction.Max("A:A") + 1

    'id
    .Cells(lngRow, 1) = lngID
    'Father
    .Cells(lngRow, 2) = txtFatherFN.Text
    .Cells(lngRow, 3) = txtFatherSN.Text
    .Cells(lngRow, 4) = txtFatherLN.Text
    .Cells(lngRow, 5) = txtFatherBirthDay.Text
    'Mother
    .Cells(lngRow, 6) = txtFatherFN.Text
    .Cells(lngRow, 7) = txtFatherSN.Text
    .Cells(lngRow, 8) = txtFatherLN.Text
    .Cells(lngRow, 9) = txtFatherBirthDay.Text
End With

Set wks = Sheets("Children")

With wks

    'find next empty row
    lngRow = .Cells(Rows.Count, 1).End(xlUp).Offset(1).Row

    'need to adjust the for statement for however you collect your children in your form
    For Each Child In Children 'this is an example only to illustrate. You will need to change Child / Children to the objects used to collect the children info.
        .Cells(lngRow, 1) = Child
        lngRow = lngRow + 1
    Next

End With


End Sub
于 2012-06-15T19:27:27.983 に答える