Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/18.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允许用户更新现有私有子代码的某些或多个位_Excel_Vba_Textbox_Userform_Insert Update - Fatal编程技术网

Excel UserForm允许用户更新现有私有子代码的某些或多个位

Excel UserForm允许用户更新现有私有子代码的某些或多个位,excel,vba,textbox,userform,insert-update,Excel,Vba,Textbox,Userform,Insert Update,有没有人知道,如果可能的话,或者对我如何允许用户更新现有私有子代码的某些部分有什么想法 例如: 当前:UserForm\u初始化Textbox1=“测试” 用户更新后:UserForm\u Initialize TextBox1=“Hello”假设您下次需要打开表单来显示TextBox1中使用的最后一个文本,请使用下一种方法: 复制表单代码顶部的下一个声明(在声明区域中): 将此代码放入文本框1Change事件: 复制Userform\u Initialize事件中的下一个代码: 现在,当用户更

有没有人知道,如果可能的话,或者对我如何允许用户更新现有私有子代码的某些部分有什么想法

例如:

当前:UserForm\u初始化Textbox1=“测试”

用户更新后:UserForm\u Initialize TextBox1=“Hello”

假设您下次需要打开表单来显示
TextBox1
中使用的最后一个文本,请使用下一种方法:

  • 复制表单代码顶部的下一个声明(在声明区域中):
  • 将此代码放入文本框1
    Change
    事件:
  • 复制
    Userform\u Initialize
    事件中的下一个代码:
  • 现在,当用户更改
    TextBox1
    文本时,新字符串将存储在注册表中,并用于在下一个UserForm初始化期间加载


    如果有什么不清楚的地方,请毫不犹豫地询问。

    如果您想在后续运行中保留更改,您可以从VBA模块中以编程方式编写VBA代码(如下所示),但很容易会以非常复杂的结构结束。我宁愿一直在某个地方更改变量,例如在.ini文件中。如果您只想为正在运行的会话保留更改,那么userform将保留这些值,直到您卸载它为止。即使这样,您也可以将值保留在userform之外,例如在全局变量中。您的意思是使userform初始化以使用最后一个TextBox1值(由用户给定)?Savesettings将数据存储在系统注册表中;如果移动到另一台计算机或操作系统,数据将不再可用。最好使用工作簿中的名称,或者更简单地说,使用单元格。@Zerokelvin:您在问题中看到这样的请求了吗?我没有。无论如何,这个问题很短,不够清楚。我要求澄清,但没有回答。我还提到了代码工作所基于的假设。写-读注册表的速度非常快,不会消耗Excel资源。我不明白你所说的“你在问题中看到这样的请求了吗?”是什么意思。然而,这个问题在概念上是错误的,但它似乎打算记住文本框中输入的最后一个值,以便在下次打开时再次显示。就使用注册表而言,它比使用名称更有效,但(略)比使用单元格效率低。我想指出的是,如果文件被移动到另一台电脑或存储在网络文件夹中,注册表中存储的值将不会跟随该文件。@Zerokelvin:当然不会。但没有人说这是必要的。无论如何,在这种情况下,这必须是一个起点,当文件被移动到另一台电脑上时也是如此。@new11:上面的代码没有解决您的问题吗?如果没有,你能更好地解释一下为了满足你的需求应该做些什么吗?
    Option Explicit
    
     'It is good to use relevant constants, able to better reflect their meaning:
     Private Const MyApp As String = "MyApplication"
     Private Const Sett As String = "Settings"
     Private Const Txt1 As String = "Txt1Val"
    
    Private Sub TextBox1_Change()
      SaveSetting MyApp, Sett, Txt1, TextBox1.Text
    End Sub
    
      Dim Txt1Val As String
      Txt1Val = GetSetting(MyApp, Sett, Txt1, "No value")
      If Not Txt1Val = "No value" Then Me.TextBox2.Text = Txt1Val