连笔字网 > 知识库

textbox控件,VBA的textbox控件相关

来源:连笔字网 2023-11-23 08:55:36 作者:连笔君

VBA的textbox控件相关

不知道怎么直接设置,可以用一个全局变量存放是不是关闭窗口,如果是,退出代码不让它运行。

示例:

Dim CC As Boolean

Private Sub CommandButton1_Click()
Unload Me '测试Unload可以,直接点×也可以
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If CC Then Cancel = True 'Exit Sub
'如果是关闭窗口过程,直接退出代码,不运行下面的东西。
MsgBox "HHHH"
End Sub

Private Sub UserForm_Initialize()
CC = False '打开窗口,初始化变量
End Sub

Private Sub UserForm_Terminate()
CC = True '窗口关闭时设置变量
End Sub

更多扩展补充

扩展

谢谢!原谅我描述的不是很清楚。现在的问题是,明明是设置的textbox1的exit事件。现在只要用鼠标点击窗口上的任何一个控件。均会激发textbox1的exit的事件。退出按钮和×只是其中两个。其他的控件(textbox2、3、4等)如何避免以上问题呢?

补充

如果从Textbox1输入完后 再点其他按钮,运行Exit事件是正常的,如果你在这些情况也不想运行Exit,那希望在哪种情况下运行Exit?按ESC的时候?

扩展

刚刚用你的程序试验了一下。基本达到我想要的目的了。但是现在扫描后,光标跳到textbox2文本框里去了。如何清空textbox1并将光标(焦点)继续留在textbox1内呢(继续下一个条码的扫描)?还望再帮忙修改下代码。

补充

TextBox1.Text=""后面再加上一行
TextBox1.SetFocus
试一下(疑问:本事件是离开TextBox1的事件,事件最后又把焦点放在了TextBox1,会不会导致光标无法离开TextBox,除非关闭窗口,是否是想要的结果)
不过你代码本身上面有一个Cancel=True,就是取消离开TextBox1,应该没有影响

扩展

作为VBA新手,不懂的太多,还望海涵。
我是希望textbox1内供扫描条码。扫描完成后,下面的厂家编码文本框、部番文本框自动弹出对应的数据,并且打印出来。重复以上动作。因此,textbox1内每扫描一个条码后就自动清空,并且光标仍然在里面。这样可以继续扫描下一个条码。我的方法也许不对。您这边有更好的代码还请发出指导下。
浪费了您这么多时间,我会加悬赏的。谢谢!

补充

应该有很多思路,主要能够实现自己想要的功能就行。

没弄过条形码,估计你发过来文件我也运行不了。Text1的值怎么改变的不太清楚,包括有些要求也不太明白。

猜测,你程序的运行过程及碰到问题:

Text1的内容通过扫描赋值;

根据条码,运行Exit事件得到下面的部署、厂家编号等信息【Exit事件如何触发的?】

清空Text1【这时下面的信息还存在】

在扫描下一条条码之前,如果点击其他控件(比如鼠标去复制下面的内容),这时Exit事件又运行一次,点击关闭窗口时也运行,会多打印一次?(这是不想要的)【这时Text1内容已经是空,是不会出现错误,或下面的值变成空值?】

扩展

您完全明白我的意思。
第2点,不一定非要exit事件。只要能实现,扫码赋值给text1后,下面的部署信息弹出即可。同时,text1清空,光标继续存在。第二次扫码给text1后,下面的部署信息才更新。
第4点,为防止鼠标误碰触,所以,不要出现点击鼠标或者键盘,又运行一次事件的情况。就是你说的不想要的东西。

c# winform开发,textbox控件问题

用户控件:

3.主要代码:

public partial class UCLineTextBox : UserControl

{

public UCLineTextBox()

{

InitializeComponent();

}

[Category("自定义"),Description("显示文本内容")]

public override string Text

{

get

{

return tb.Text;

}

set

{

tb.Text = value;

}

}

public delegate void ButtonClick();

public event ButtonClick ButtonSelectClick;

private void tb_Enter(object sender, EventArgs e)

{

//当鼠标进入文本框的时候,按钮可见

btn.Visible = true;

}

private void tb_Leave(object sender, EventArgs e)

{

//当鼠标离开文本框的时候,按钮消失

btn.Visible = false;

}

private void UCLineTextBox_Load(object sender, EventArgs e)

{

btn.Visible = false;

}

private void btn_Click(object sender, EventArgs e)

{

try

{

ButtonSelectClick.DynamicInvoke(null);

}

catch (Exception)

{

return;

}

}

}

4.编译该控件,然后在工具箱中就可以看到此控件,然后把该控件托到界面上,就可以看到效果了。

你也可以使用Gdi+集成TextBox手绘,但相对来说比较麻烦

如何在一个VBA textbox控件中加入滚动条啊?

列表框更适合。

EXCEL VBA窗体中的label及textbox序号循环

EXCEL VBA窗体中的label及textbox序号循环设置方法:

1、引用成组的控件时,没有专门的集合对象,窗体中只有一个Controls集合对象,包含了Label、TextBox、ListBox、ComboBox等等控件对象,因此只能通过Controls集合对象进行批量引用。
2、在创建窗体时,可以用一个Frame控件将成组的Label和TextBox控件集合起来,
比如,用名称为Frame_Labels的控件集合100个Label,用名称为Frame_TextBoxes的控件集合100个TextBox。
3、用Userform.Frame_Labels.Controls(0) 引用第一个Label对象。
4、用Userform.Frame_TextBoxes.Controls(0) 引用第一个TextBox对象。
5、Frame_Labels这个对象名称是要你自己定义的啊,创建了Frame对象后,将名称Frame1改成Frame_Labels,这样便于理解代码,直接用Frame1没有问题。
6、用两个Frame控件,是为了区分集合Labels和TextBox。

VBA实现一键清除textbox数值的方法

可以换个思路,遍历窗体中的所有控件,如果控件类型是textbox,则将其text属性设置为空
代码如下:
For Each C In UserForm1.Controls
If TypeName(C) = "TextBox" Then C.Text=""
Next

关于此例中用到的TypeName函数的相关知识:
适用于获得一个变量的类型名称的,比如 A 是一个字符串变量,那么TypeName(A)=String

EXCEL VBA 如何获取文本框名称?

和窗体控件类似处理,可用如下方法:
在每个文本框获得焦点事件中将文本框名称赋值给X(X应为全局变量),比如
Private Sub TextBox1_GotFocus()
X = TextBox1.Name
End Sub

扩展

我只是菜鸟,请详细说明
程序是写在类模块中、模块中还是表中?
我用Public声明了X变量
点击表中的文本框,程序不启动。用加载宏也加载不了这个程序。
还有我说的文本框不是控件,请参见我对下面老师的扩展。

EXCEL vba 窗体文本框用什么事件触发

Private Sub TextBox2_Enter()
TextBox2.Value = TextBox1.Value
End Sub

Excel的VBA窗体中,文本框的Enter事件相当于VB6.0里面的GotFocus事件!

通过以上代码,就可以当TextBox2获得焦点的时候,自动复制TextBox1的内容!!

扩展

谢谢。很好!还有一个问题,单元格如何向复合框赋值,在窗体一打开复合框就显示单元格的内容,单元格的内容是动态的

补充

Private Sub CommandButton1_Click()
Dim i As Long, m As Long
m = Sheets("sheet1").[a65536].End(3).Row
For i = 1 To m
ComboBox1.AddItem Sheets("Sheet1").Cells(i, "A").Value
Next
ComboBox1.Value = ComboBox1.List(ComboBox1.ListCount - 1)
End Sub

详见附件!

excel VBA能够调整TextBox值大小的控件?

Private Sub CommandButton1_Click()
TextBox1.Text = TextBox1.Text + 1
End Sub

Private Sub CommandButton2_Click()
TextBox1.Text = TextBox1.Text - 1
End Sub

如和对VBA控件的textbox进行数据验证

不知道怎么直接设置,可以用一个全局变量存放是不是关闭窗口,如果是,退出代码不让它运行。示例:DimCCAsBooleanPrivateSubCommandButton1_Click()UnloadMe'测试Unload可以,直接点×也可以EndSubPrivateSubTextBox1_Exit(ByValCan

vba控件 textbox内容格式

textbox控件不行,好像richbox可以

上一篇:if函数多个条件,excel if函数多个条件怎么用教程

下一篇:没有了

相关阅读