2

私は新しい ti VBA です。次のような機能を実行したいと思います。誰かが私を助けてくれることを願っています。

関数をクリックするとセル A2 から始まるマクロを設定する必要があります。関連情報を入力できるダイアログ ボックスが表示され、関連するセルに挿入されます。

3 つのフィールド (B2、C2、D2) にデータを挿入します

次に、B3 を選択します。ここでボタンをもう一度押して、同じシンニングをもう一度行うことができます

これまでのところ、私のコードはここにあります

Dim StartCell As Integer

 Private Sub Cancel_Click()
     Unload GarageDimensions

End Sub

Private Sub LengthBox_Change()

If LengthBox.Value >= 15 Then
    MsgBox "Are you sure? You do realise it is just a garage!"
    Exit Sub
End If

End Sub
Private Sub Submit_Click()
'This code tells the text entered into the job reference textbox to be inserted _
into the first cell in the job reference column.

StartCell = Cells(1, 2)

Sheets("Data").Activate
If IsBlankStartCell Then


    ActiveCell(1, 1) = JobRef.Text
     ActiveCell.Offset(0, 1).Select

ActiveCell(1, 1) = LengthBox.Value
 ActiveCell.Offset(0, 1).Select

    ActiveCell(1, 1) = ListBox1.Value
    ActiveCell.Offset(0, 1).Select


    ActiveCell(1, 1) = ListBox1.Value * LengthBox.Value

Else
     Range("A1").End(xlDown).Offset(1, 0).Select

End If


Unload GarageDimensions

End Sub
Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "2.2"
    .AddItem "2.8"
    .AddItem "3.4"
End With

     ListBox1.ListIndex = 0

End Sub

事前にご回答いただきありがとうございます

アダム

4

1 に答える 1

2

Private Sub LengthBox_Change()イベントは必要ありません。以下で行ったように、イベントまたはイベントLengthBoxでTextBox の MAX 文字を設定できます。Design ModeUserForm_Initialize()

Startcellまた、ユーザーフォームを実行するたびにデータをハードコードすると、データは A2 から始まり、そこにデータがある場合は上書きされます。代わりに、書き込み可能な最後の行を探してみてください。

ところで、これはあなたがしようとしていることですか(UNTESTED)?

Option Explicit

Dim StartCell As Integer
Dim ws As Worksheet

Private Sub UserForm_Initialize()
    Set ws = Sheets("Data")

    With ListBox1
        .AddItem "2.2"
        .AddItem "2.8"
        .AddItem "3.4"
        .ListIndex = 0
    End With

    LengthBox.MaxLength = 14
End Sub

Private Sub Submit_Click()
    With ws
        '~~> Find the first empty row to write
        StartCell = .Range("A" & Rows.Count).End(xlUp).Row + 1

        .Range("A" & StartCell).Value = Val(Trim(ListBox1.Value)) _
        * Val(Trim(LengthBox.Value))

        .Range("B" & StartCell).Value = JobRef.Text
        .Range("C" & StartCell).Value = LengthBox.Value
        .Range("D" & StartCell).Value = ListBox1.Value
    End With

    Unload Me
End Sub

Private Sub Cancel_Click()
    Set ws = Nothing
    Unload Me
End Sub
于 2012-04-27T20:54:31.097 に答える