2017-12-07 7 views
1

私は4行のデータセットを持っていますが、私は最初の行データをuserform Excelで自動的に表示する必要がありますリボンのボタン。後で次の行をクリックすると、次の行の完全なデータを表示する必要があります。例えばボタンをクリックすると自動的にユーザーフォームにExcelシートの最初の行データを表示する方法

stud_id  stud_name  age   gender 
1    a   20   M 
2    b   22   M 
3    c   25   F 
4    d   22   F 
Public ncurretnrow As Long 

Sub Userform_Initialize() 
ncurrentrow = Sheet3("2017").Cells(Rows.Count, 1).End(xlDown).Offset(1, 0).Row 
traversedata (ncurrentrow) 

End Sub 


Public Sub traversedata(nrow As Long) 

Me.stud_id.Value = ws.Cells(nrow, 1).Value 
Me.stud_name.Value = ws.Cells(nrow, 2).Value 
Me.age.Value = ws.Cells(nrow, 2).Value 
If Optionyes = True Then 
    Me.genderm.Value = ws.Cells(nrow, 3).Value 
Else 
    Me.genderf.Value = ws.Cells(nrow, 3).Value 
End If 
+0

この 'VBA'または' vb.net'ですか?あなたの投稿にnothタグがあります。もう1つの質問ですが、特定の行をクリックするたびにUser_formが開き、フォームにcuurent行の値が表示されることを望みますか? –

+0

これはvbaです。はい、そのボタンをクリックするたびに、最初の行が自動的にuserformに表示されます。 – suga

+0

最初の行のデータを表示しますか?またはあなたのカーソルがある行?アクティブなワークシート内 –

答えて

0

は、以下のコード(User_Formモジュール内部の両方Sub S)を参照してください。

Public ws As Worksheet 

Private Sub UserForm_Initialize() 

Dim HeaderRng As Range 
Dim ncurretnrow As Long 

' set the worksheet object 
Set ws = ThisWorkbook.Sheets("2017") 

Set HeaderRng = ws.Cells.Find(what:="stud_id") ' look for the header (below it you will find the first row with data) 
If Not HeaderRng Is Nothing Then 
    ncurretnrow = HeaderRng.Row + 1 
Else 
    MsgBox "Unable to find stud_id header", vbCritical 
    Exit Sub 
End If 

traversedata ncurretnrow 

End Sub 

Sub traversedata(nrow As Long) 

With Me 
    .stud_id.Value = ws.Cells(nrow, 1).Value 
    .stud_name.Value = ws.Cells(nrow, 2).Value 
    .age.Value = ws.Cells(nrow, 3).Value 
    If Optionyes = True Then 
     .genderm.Value = ws.Cells(nrow, 4).Value 
    Else 
     .genderf.Value = ws.Cells(nrow, 4).Value 
    End If 
End With 

End Sub 
+0

に表示する必要があります.Cells(ncurrentrow、1)。値= "" End Sub – suga

関連する問題