プロが教える店舗&オフィスのセキュリティ対策術

UserFormのConboBoxで「○○」を選んで、
UserFormのTextBoxで『あいう』と入力すると、ワークシートに
A      B
1 ○○   ××
2 あいう
と表示され、
UserFormのConboBoxで「××」を選んで、
UserFormのTextBoxで『アイウ』と入力すると
A      B
1 ○○   ××
2 あいう  アイウ
3 :    :
と表示されるようにしたいと思います。
以下のプログラムまではできています。
*********************************************
Private Sub UserForm_Initialize()
 Dim lasClm As Integer, i As Integer
 lasClm = Sheet1.Range("A1").End(xlToRight).Column
  For i = 1 To lasClm
  ComboBox1.AddItem Sheet1.Cells(1, i).Value
  Next i
End Sub
*********************************************
Private Sub CommandButton1_Click()
 Select Case ComboBox1.Text
 Case Sheet1.Cells(1, 1).Value '「○○」が選択
 Sheet1.Cells(2, 1).Value = TextBox1.Text ・・・(1)
 Case Sheet1.Cells(1, 2).Value '「××」が選択
 Sheet1.Cells(2, 2).Value = TextBox1.Text ・・・(2)
 End Select
 UserForm1.Hide
End Sub
**********************************************
今は(1)、(2)のように直接セルを指定しているのですが、
この部分を各列(A列、B列)の最終行の値を取得して、
最終行+1のセルに順次TextBoxに入力された値を代入していきたいのですが、
どのようにしたらよいのでしょうか。
しかし、A列とB列は同じように値が増えていくとは限りません。
例)
   A     B
1 ○○   ××
2 あいう  アイウ
3 かきく
4 さしす
となる場合もあるので、A列とB列それぞれの最終行の値を取得したいと思っています。

A 回答 (2件)

こんな感じ?



'*********************************************
Private Sub CommandButton1_Click()
 If Me.ComboBox1.ListCount < 0 Then Exit Sub
 Sheet1.Cells(65536, Me.ComboBox1.ListIndex + 1) _
    .End(xlUp).Offset(1, 0).Value = TextBox1.Text
 Unload Me
End Sub
'**********************************************
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

解決することができました。

お礼日時:2005/12/06 20:23

RangeオブジェクトのプロパティEnd()を使うと、データが入力されてる再終行のRangeオブジェクトを取得できます。

なのでその次のセルを参照すれば良いかと。こんな感じ;

Public functiom maxrow( col_idx as Long) as Range
Set maxrow = Cells( 1, col_idx).End(xlDown).Offset(1,0)
End Function

上記の例だと、指定列の1行めにデータがないと、エラーになりますので、ちょっと注意。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

解決することができました。

お礼日時:2005/12/06 20:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!