1

セルに分割された長いデータ行があります。各セルにはテキストボックスが入力され、20 個のテキストボックスがあります (そして、20 個のセルがあると仮定しています)。

以下のコードは、各テキストボックスにデータを入力する方法です...

Private Sub UserForm_Initialize()

Set rng = Worksheets("Risk&Issues").Range("A4")
i = 0: j = 1

txtbox_revri_idnum.Text = rng.Offset(i).Value
txtbox_revri_projname.Text = rng.Offset(i, j).Value: j = j + 1
txtbox_revri_isrefnum.Text = rng.Offset(i, j).Value: j = j + 1
...
txtbox_revri_projname.SetFocus

フォームには「更新」ボタンがあり、押すと(ワークシート内の)セルが各テキストボックスの新しいコンテンツで更新されます。「更新」ボタンのコードは以下のとおりです...

Private Sub button_revri_update_Click()

ActiveCell.Value = txtbox_revri_projname.Value
ActiveCell.Offset(0, 1) = txtbox_revri_isrefnum.Value
ActiveCell.Offset(0, 2) = txtbox_revri_riskrefnum.Value
...
End Sub

ワークシートを表示すると、テキスト ボックスに入力されている各セルが更新されることが期待されます。ただし、実際に取得するのは、たまたまセル上でマウスを押した場所から挿入された新しい行です。

誰か助けてくれませんか?

4

2 に答える 2

0

前の質問のように「次へ」を押すと、の値iはすでに設定されています。その質問に基づいて、あなたはこれを使うことができます

Private Sub button_revri_update_Click()
    j = 1

    rng.Offset(i).Value = txtbox_revri_projname.Text
    rng.Offset(i, j).Value = txtbox_revri_isrefnum.Text: j = j + 1:
    rng.Offset(i, j).Value = txtbox_revri_riskrefnum.Text: j = j + 1
    rng.Offset(i, j).Value = TextBox4.Text: j = j + 1
End Sub
于 2012-08-08T13:52:27.863 に答える
0

ActiveCell を使用しているため、コードはアクティブ セル (「たまたまマウスを押したところ」) に新しい行を追加します。代わりに次のようなものを試してください:

Private Sub button_revri_update_Click()
Dim FirstRowCell as Range

Set FirstRowCell = ActiveSheet.Range("B1")
With FirstRowCell
   .Value = txtbox_revri_projname.Value
   .Offset(0, 1) = txtbox_revri_isrefnum.Value
   .Offset(0, 2) = txtbox_revri_riskrefnum.Value
End With
...
End Sub
于 2012-08-08T13:51:54.060 に答える