excel vba:在外部点击之前,单元格不会更新

时间:2014-11-08 04:30:24

标签: excel-vba cell auto-update vba excel

我一直在遇到这个问题。我有一个命令按钮,用于更新某个单元格的值,但是当您单击该按钮时,该值不会更新。如果您随后单击工作表中的其他单元格,那么该值最终会更新。我的代码如下所示:

Private Sub eight_Click()
    Dim oldnum As String
    If numset = False Then
        oldnum = Range("F4").Value
        Range("F4").Value = oldnum + "8"
    Else
        num1 = CLng(Range("F4").Value)
        Range("F4").Value = "8"
        numset = False
    End If
End Sub

在Excel for Mac上,这种情况100%发生在我身上,偶尔会出现在Excel 2010 for Windows上。

以下是文件:http://wikisend.com/download/906870/Tan.xlsm

1 个答案:

答案 0 :(得分:0)

让我们说:您有一个调用用户窗体(frmCalendar)的按钮(btnCalendarInvoke) 并且此用户窗体具有日期选择器(dtPicker)。

现在,如果我知道您想单击excel表单上的按钮(调用该表单),请从那里的日期选择器中选择日期,然后希望所选的日期自动反映在Excel单元格中。

这是您可以做的:

第1步-从项目资源管理器中打开Userform的代码窗口,并在General范围下创建Public Variable。

http://localhost:8181/style.css

第2步-现在,在UserForm代码中创建一个Public Sub来设置此变量,如下所示。

Public rangeName as String

第3步-创建代码以处理日期选择器更改事件,如下所示。

Public Sub SetDestinationRangeName(rngName as String)    
   rangeName = rngName
End Sub

第4步-转到Excel工作表并编写代码来处理按钮单击事件。如下所示。

Private Sub dtSelect_Change()
    Worksheets("Scorecard").Range(rangeName).value = Format(Me.dtSelect, "Short Date").Value
    Unload Me
End Sub

第5步-现在对其进行测试。单击出现日历表单按钮,从日期选择器中选择日期,它会自动关闭并更新Excel工作表。您无需按照此方法报告的那样对单元格进行额外的点击。