【问题标题】:value is pasted twice in column值在列中粘贴两次
【发布时间】:2017-04-23 11:46:38
【问题描述】:

我的问题在于“A”列。在此列中,今天的日期应粘贴在第一个空白行中。但是我把它粘贴了两次。第一次显示 UserForm1,第二次单击 CommandButton1。其他一切正常(来自 UserForm1 的数据粘贴到最后一行 + 1。问题仅与列“A”有关。 请在下面找到代码:

Private Sub CommandButton1_Click()


Call UserForm_Initialize

Unload Me
End Sub


Private Sub UserForm_Initialize()

Dim LastRow As Long, ws As Worksheet

'UserForm1.Label9.Caption = ws.Range("A1").Value

Set ws = Sheets("Log")

With ComboBox1
    .AddItem "Quality"
    .AddItem "Time"
    .AddItem "Money"
End With


LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 'ostatni wiersz


'entry date
    ws.Range("A1").Copy
       Sheets("Log").Range("A" & LastRow).PasteSpecial xlPasteValues

'pasting data from form
'ws.Range("A" & LastRow).Value = Label9.Caption
ws.Range("B" & LastRow).Value = TextBox8.Text
ws.Range("C" & LastRow).Value = TextBox1.Text
ws.Range("D" & LastRow).Value = TextBox2.Text
ws.Range("E" & LastRow).Value = TextBox3.Text
ws.Range("F" & LastRow).Value = TextBox4.Text
ws.Range("G" & LastRow).Value = TextBox5.Text
ws.Range("H" & LastRow).Value = ComboBox1.Text
ws.Range("I" & LastRow).Value = TextBox6.Text
ws.Range("J" & LastRow).Value = TextBox7.Text
End Sub

请帮忙。

【问题讨论】:

    标签: excel date userform vba


    【解决方案1】:

    UserForm_Initialize() 每次打开用户窗体时都会执行。因此,每次显示此用户表单时,您都从UserForm_Initialize() 执行整个代码,然后当您单击CommandButton1 时。您只在 A 列中看到了问题,因为每个 TextBox 都是空的,因此您的程序在其余单元格中什么都没有填充。这里的解决方案是将初始化 Userform 的代码部分和将值复制到单元格的部分分开。你可以这样做:

    Private Sub CommandButton1_Click()
        CopyToCells
        Unload Me
    End Sub
    
    Private Sub UserForm_Initialize()
        With ComboBox1
            .AddItem "Quality"
            .AddItem "Time"
            .AddItem "Money"
        End With
    End Sub
    
    Sub CopyToCells()
        Dim LastRow As Long, ws As Worksheet
        Set ws = Sheets("Log")
    
        LastRow = ws.Range("A" & Rows.Count).End(xlUp).row + 1 'ostatni wiersz
    
        'entry date
        ws.Range("A1").Copy
        Sheets("Log").Range("A" & LastRow).PasteSpecial xlPasteValues
    
        'pasting data from form
        ws.Range("B" & LastRow).Value = TextBox8.Text
        ws.Range("C" & LastRow).Value = TextBox1.Text
        ws.Range("D" & LastRow).Value = TextBox2.Text
        ws.Range("E" & LastRow).Value = TextBox3.Text
        ws.Range("F" & LastRow).Value = TextBox4.Text
        ws.Range("G" & LastRow).Value = TextBox5.Text
        ws.Range("H" & LastRow).Value = ComboBox1.Text
        ws.Range("I" & LastRow).Value = TextBox6.Text
        ws.Range("J" & LastRow).Value = TextBox7.Text
    End Sub
    

    【讨论】:

    • 非常感谢您提供详细信息。现在我明白了这一切是如何相互交流的,以及为什么会以这种方式产生。你太棒了!
    • 没问题,pozdrowienia z Poznania ;)
    猜你喜欢
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    相关资源
    最近更新 更多