VSTO Excel,保存组合框文本,组合框重置工作簿打开?

时间:2011-10-15 18:34:28

标签: excel vsto combobox

我在Excel VSTO解决方案中有几个ComboBox。组合是窗户形式的组合。

问题在于,当用户重新打开电子表格时,我希望重新填充组合中的选定值。目前,我知道这些值与电子表格一起保存,我知道由于在同一台机器上进行开发和测试,我遇到了ClickOnce安装程序问题,我可以看到电子表格打开,安装程序去获取新的版。在那段时间里,我看到了我想要的组合值。

但是,一旦自定义安装并且电子表格初始化,组合将重置为默认文本值。我可以想办法解决这个问题,包括使用缓存数据......有没有人知道在电子表格打开时是否有一种简单的方法可以防止组合重置?

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最好的解决方案,但这就是我最终要做的事情。

我首先将我的组合嵌入细胞中。

Friend WithEvents cmbType

Private Sub EmbedCombo()
   cmbType = Me.Controls.AddComboBox(Me.Range("A7"), "cmbType")
End Sub

然后我创建了一个sub来将Combo Text的值写回控件所在的单元格。

Private Sub SaveComboText()
   Me.Range("A7").Value = Me.cmbType.Text
End Sub

最后一个将Cell Value写回Combo的例程。

Private Sub LoadComboText()
   Me.cmbType.Text = Me.Range("A7").Value  
End Sub

为了使一切正常,我使用WorkBoook BeforeSave事件和WorkSheet.StartUp事件。

首先

Private Sub ThisWorkbook_BeforeSave() Handles Me.BeforeSave
    Globals.Sheet1.StoreComboValues()
End Sub

然后

Private Sub Sheet1_Startup() Handles Me.Startup
  Call LoadComboText()
End Sub

如果其他人知道避免这种情况的更好方法,请告诉我:)