Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从UserForm添加数据将在表empy中留下第一行_Excel_Vba_Excel 2016 - Fatal编程技术网

Excel 从UserForm添加数据将在表empy中留下第一行

Excel 从UserForm添加数据将在表empy中留下第一行,excel,vba,excel-2016,Excel,Vba,Excel 2016,正如标题所说,我创建了一个UserForm,它将数据添加到表中,但由于某些原因,它没有将数据添加到第一个空行中。换言之,在我的桌面上总是会有一排空位,我一辈子都不知道自己做错了什么。我是个新手,所以很明显我做错了什么,但是什么 希望你能对此有所帮助 如果您想查看,这里有一个指向Excel文件的链接(我在文件中创建了一个单独的选项卡,解释了表与不同对象之间的关系): 如果没有,代码如下: Private Sub button_leggtil_Click() 'Validation

正如标题所说,我创建了一个UserForm,它将数据添加到表中,但由于某些原因,它没有将数据添加到第一个空行中。换言之,在我的桌面上总是会有一排空位,我一辈子都不知道自己做错了什么。我是个新手,所以很明显我做错了什么,但是什么

希望你能对此有所帮助

如果您想查看,这里有一个指向Excel文件的链接(我在文件中创建了一个单独的选项卡,解释了表与不同对象之间的关系):

如果没有,代码如下:


Private Sub button_leggtil_Click()
    'Validation

    If Me.data_foretak.Value = "" Then
        MsgBox "Mangler Foretaksnavn."
    End If

    If Me.data_kontaktperson.Value = "" Then
        MsgBox "Mangler Kontaktperson."
    End If

    If Me.data_telefonnummer.Value = "" Then
        MsgBox "Mangler Telefonnummer."
    End If

    If VBA.IsNumeric(Me.data_telefonnummer.Value) = False Then
        MsgBox "Ikke et gyldig telefonnummer."
        Exit Sub
    End If

     If Me.data_epost.Value = "" Then
        MsgBox "Mangler Epost."
    End If

     If Me.data_pris.Value = "" Then
        MsgBox "Mangler Pris."
    End If

    If VBA.IsNumeric(Me.data_pris.Value) = False Then
        MsgBox "Ikke gyldig pris format."
        Exit Sub
    End If

    If Me.data_datotilb.Value = "" Then
        MsgBox "Mangler dato - Tilbud."
    End If

    If VBA.IsDate(Me.data_datotilb.Value) = False Then
        MsgBox "Feil dato format - Tilbud (Format: dd/mm/aa)."
        Exit Sub
    End If

    If Me.data_datooppf.Value = "" Then
        MsgBox "Mangler dato - Oppfølging."
    End If

    If VBA.IsDate(Me.data_datooppf.Value) = False Then
        MsgBox "Feil dato format - Oppfølging (Format: dd/mm/aa)."
        Exit Sub
    End If

    If Me.combo_sannsynlighet.Value = "" Then
        MsgBox "Mangler Sannsynlighet."
    End If


'Check for duplicate and insert data to table

Dim oNewRow As ListRow
Dim rng As Range
Set rng = ThisWorkbook.Worksheets("Tilbud").Range("TilbudTable")
rng.Select
Set oNewRow = Selection.ListObject.ListRows.Add(AlwaysInsert:=True)

If Application.WorksheetFunction.CountIf(rng, Me.data_foretak) > 0 Then
    MsgBox "Denne bedriften finnes alerede i listen."
    Exit Sub
End If

With ws
    oNewRow.Range.Cells(1, 1).Value = Me.data_foretak
    oNewRow.Range.Cells(1, 2).Value = Me.data_kontaktperson
    oNewRow.Range.Cells(1, 3).Value = Me.data_telefonnummer
    oNewRow.Range.Cells(1, 4).Value = Me.data_epost
    oNewRow.Range.Cells(1, 5).Value = Me.data_pris
    oNewRow.Range.Cells(1, 6).Value = Me.data_datotilb
    oNewRow.Range.Cells(1, 7).Value = Me.data_datooppf
    oNewRow.Range.Cells(1, 8).Value = Me.combo_sannsynlighet
End With

' Clear Input

Me.data_foretak.Value = ""
Me.data_kontaktperson.Value = ""
Me.data_telefonnummer.Value = ""
Me.data_epost.Value = ""
Me.data_pris.Value = ""
Me.data_datotilb.Value = ""
Me.data_datooppf.Value = ""
Me.combo_sannsynlighet.Value = ""


End Sub

-------------------------------------------------------------------------------------

Private Sub button_lukk_Click()

'Close form

Unload Me

End Sub

-------------------------------------------------------------------------------------

Private Sub button_tomskjema_Click()

'Clear Form

Me.data_foretak.Value = ""
Me.data_kontaktperson.Value = ""
Me.data_telefonnummer.Value = ""
Me.data_epost.Value = ""
Me.data_pris.Value = ""
Me.data_datotilb.Value = ""
Me.data_datooppf.Value = ""
Me.combo_sannsynlighet.Value = ""

End Sub

-------------------------------------------------------------------------------------

Private Sub UserForm_Activate()

    With Me.combo_sannsynlighet
        .Clear
        .AddItem ""
        .AddItem "10%"
        .AddItem "20%"
        .AddItem "30%"
        .AddItem "40%"
        .AddItem "50%"
        .AddItem "60%"
        .AddItem "70%"
        .AddItem "80%"
        .AddItem "90%"
        .AddItem "100%"

    End With

End Sub


我感谢任何意见

我发现此代码添加到
Sheet1
上名为
MyTable
的表中。如果表为空,则添加为第一行

Sub Test()

    Dim tbl As ListObject

    Set tbl = ThisWorkbook.Worksheets("Sheet1").ListObjects("MyTable")

    With tbl.ListRows.Add
        .Range(tbl.ListColumns("Heading 1").Index) = "Add data in column headed 'Heading 1'"
        .Range(tbl.ListColumns("Heading 2").Index) = "Another named column."
        .Range(3) = "Third column"
    End With

End Sub  

编辑-很抱歉,无法对您的代码进行测试,因为它不是一个-即,我无法轻松地将其直接复制到我的VBE中进行测试。

对代码感到抱歉,我现在知道我可以给您提供更好的示例了!但是感谢您的回复,我将尝试在代码中实现它,看看它是否有效。不管怎样,我将用一个更可复制的示例代码更新我的问题。