VBA的textbox控件相关
不知道怎么直接设置,可以用一个全局变量存放是不是关闭窗口,如果是,退出代码不让它运行。
示例:
Dim CC As BooleanPrivate 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可以