Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 从ComboBox中搜索值,然后将文本框中的值写入单元格_Excel_Vba - Fatal编程技术网

Excel 从ComboBox中搜索值,然后将文本框中的值写入单元格

Excel 从ComboBox中搜索值,然后将文本框中的值写入单元格,excel,vba,Excel,Vba,我的工作场所有一张Excel表格,我们在那里制作托盘。我制作了一个用户表单,其中我有5个组合框和5个文本框。当我们有新订单时,我希望宏从组合框中获取值,并在字段“E7:E1347”中搜索名称,并将文本框中的数字插入到搜索托盘旁边的M列。例子: 我想订购10件测试托盘。我在ComboBox1中键入TestPallet,在TextBox6中键入10。在我点击INSERT按钮后,我希望宏搜索名称并将数字从文本框插入到M列 我现在有一个解决办法,但它真的很慢。我做了一张表格,如果我在盒子里输入了什么东西

我的工作场所有一张Excel表格,我们在那里制作托盘。我制作了一个用户表单,其中我有5个组合框5个文本框。当我们有新订单时,我希望宏从组合框中获取值,并在字段“E7:E1347”中搜索名称,并将文本框中的数字插入到搜索托盘旁边的M列。例子: 我想订购10件测试托盘。我在ComboBox1中键入TestPallet,在TextBox6中键入10。在我点击INSERT按钮后,我希望宏搜索名称并将数字从文本框插入到M列

我现在有一个解决办法,但它真的很慢。我做了一张表格,如果我在盒子里输入了什么东西,它就会在那里破裂,但是每次我按下一个键来写托盘的名称时,程序都会重新计算,速度非常慢。我觉得,如果可能的话,这样会更快

到目前为止我拥有的代码:(代码中注释的所有内容都有效)

提前谢谢你的帮助。即使这是不可能的,仅仅说“这是不可能的”也是一个巨大的帮助。

怎么样

Dim i  as long
     
  For i =7 to 1347
     If Instr(Sheets(1).Range("E" & i).Value, me.combobox1.value) then Sheets(1).Range("M" & i).value=me.textbox6.value    
   next
怎么样

Dim i  as long
     
  For i =7 to 1347
     If Instr(Sheets(1).Range("E" & i).Value, me.combobox1.value) then Sheets(1).Range("M" & i).value=me.textbox6.value    
   next
单个组合框/文本框 由于您已经从范围E7:E1341填充了组合框,因此我们可以使用它的ListIndex属性来获取所选值的行,并从中获取列M中的适当值

Dim idx尽可能长
长得一样长
idx=ComboBox1.ListIndex
如果idx-1那么
lngRow=ComboBox1.ListIndex+7
工作表(“palety”).Range(“M”和lngRow).Value=TextBox1.Value
如果结束
多个组合框/文本框 如果您有多个按顺序命名的组合框/文本框,例如ComboBox1/TextBox1、ComboBox2/TextBox2等,并且以相同的方式填充,那么您可以使用类似的方式将所有值放入M列

Dim idx尽可能长
Dim idxList尽可能长
长得一样长
对于idx=1到5
idxList=Me.Controls(“组合框”&idx.ListIndex
如果idxList为-1,则
lngRow=idxList+7
工作表(“palety”).Range(“M”和lngRow).Value=Me.Controls(“TextBox”和idx).Value
如果结束
下一个idx
单个组合框/文本框 由于您已经从范围E7:E1341填充了组合框,因此我们可以使用它的ListIndex属性来获取所选值的行,并从中获取列M中的适当值

Dim idx尽可能长
长得一样长
idx=ComboBox1.ListIndex
如果idx-1那么
lngRow=ComboBox1.ListIndex+7
工作表(“palety”).Range(“M”和lngRow).Value=TextBox1.Value
如果结束
多个组合框/文本框 如果您有多个按顺序命名的组合框/文本框,例如ComboBox1/TextBox1、ComboBox2/TextBox2等,并且以相同的方式填充,那么您可以使用类似的方式将所有值放入M列

Dim idx尽可能长
Dim idxList尽可能长
长得一样长
对于idx=1到5
idxList=Me.Controls(“组合框”&idx.ListIndex
如果idxList为-1,则
lngRow=idxList+7
工作表(“palety”).Range(“M”和lngRow).Value=Me.Controls(“TextBox”和idx).Value
如果结束
下一个idx


谢谢您的回答,但当我尝试运行您的代码时,我会收到错误消息“Next without for”(下一步不适用于),请立即检查:)如果它有效,请投票表决我的建议!它是为新版本而不是为ForTried编写的,但它什么也不做。等了大约2分钟(只是为了检查我的电脑是否慢),但什么也没发生。信息在表1上吗?如果没有,请将相应的更改工作表(1)更改为活动工作表谢谢您的回答,但是当我尝试运行您的代码时,我会收到错误消息“Next without for”(下一步不进行),请立即检查:)如果行得通,请投票表决我的建议!它是为新版本而不是为ForTried编写的,但它什么也不做。等了大约2分钟(只是为了检查我的电脑是否慢),但什么也没发生。信息在表1上吗?如果未更改,请将图纸(1)更改为活动图纸HI!听起来你去那里是个好主意。分享一个有助于我们帮助您的信息(因为我们将能够找出您可能出错的地方)。如果没有任何代码,你不会通过评论吸引很多答案或建议。你是如何填充组合框的?@SamuelEverson将代码添加到原始问题中的。对不起,我是新手website@norieMe.ComboBox1.List=工作表(“palety”).Range(“E7:E1341”)。我在UserForm InitializeHi上使用了这个值!听起来你去那里是个好主意。分享一个有助于我们帮助您的信息(因为我们将能够找出您可能出错的地方)。如果没有任何代码,你不会通过评论吸引很多答案或建议。你是如何填充组合框的?@SamuelEverson将代码添加到原始问题中的。对不起,我是新手website@norieMe.ComboBox1.List=工作表(“palety”).Range(“E7:E1341”)。我在UserForm InitializeThanks上为代码使用了这个值。我将其分配给按钮,但当我尝试时,文本框中的数字消失,并且它不会出现在我选择的托盘的M列中。在那个单元格里有一些剩余的代码,删除了它,但仍然一无所获。或者我可能做错了什么?尝试将其分配到组合框,但现在它是空的,我搞错了-我将修复答案。谢谢,伙计,这很好。我还有一个问题:我是否必须为每个组合框都编写此代码,或者是否有方法遍历所有组合框?其他组合框/文本框的值应该放在哪一列?这是一样的:其他组合框从同一字段填充。其他文本框也应该转到M列,谢谢你的代码。我将其分配给按钮,但当我尝试时,文本框中的数字消失,并且它不会出现在我选择的托盘的M列中。在那个单元格里有一些剩余的代码,删除了它,但仍然一无所获。或者我可能会做点什么