【发布时间】:2021-04-13 00:51:00
【问题描述】:
我的工作场所有一张 Excel 表格,我们正在那里制作托盘。我创建了一个用户表单,其中有 5 个组合框 和 5 个文本框。当我们有一个新订单时,我希望宏从组合框中获取值并在“E7:E1347”字段中搜索名称,然后将文本框中的数字插入到搜索托盘旁边的 M 列。例子: 我想订购 10 件 TestPallet。我在 ComboBox1 中键入 TestPallet,在 TextBox6 中键入 10。在我点击 INSERT 按钮后,我希望宏搜索名称并将文本框中的数字插入到 M 列。
我现在有一个解决方法,但它真的很慢。我做了一张表,如果我在盒子里输入一些东西,它会在那里疼痛,但是每次我敲击键写托盘名称时程序都会重新计算,而且速度很慢。我觉得,如果可以的话,这样会更快。
到目前为止我的代码:(代码中注释的所有内容都有效)
Public Sub Import_Click()
Dim palety, skracovanie, harmonogram As Worksheet
Set palety = ThisWorkbook.Worksheets("palety")
Set skracovanie = ThisWorkbook.Worksheets("skracovanie")
Set harmonogram = ThisWorkbook.Worksheets("harmonogram")
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
'Sheets("palety").Select
'ActiveSheet.Range("M:M").AutoFilter Field:=13, Criteria1:=">=1"
'név
'palety.Range("E1347:E3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'kód vstupného reziva
'palety.Range("AA1347:AA3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'kód palety
'palety.Range("C1347:C3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'harmonogram fulre
'palety.Range("C7:C1341").SpecialCells(xlCellTypeVisible).Copy
'harmonogram.Cells(5, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'kód prírezov
'palety.Range("G1347:G3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 4).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'méretek + darabszám
'palety.Range("H1347:K3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 5).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'poznámka
'palety.Range("BW1347:BW3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 9).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'objem celkom
'palety.Range("N1347:N3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 12).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'výťaž
'palety.Range("AC1347:AC3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 13).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'príprava
'palety.Range("Q1347:Q3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 16).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'spotreba času na 100 ks
'palety.Range("R1347:R3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 17).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'prírez V szog
'palety.Range("F1347:F3925").SpecialCells(xlCellTypeVisible).Copy
'skracovanie.Cells(3, 24).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'Rows("3:100").Select
'ActiveWorkbook.Worksheets("skracovanie").Sort.SortFields.Clear
'ActiveWorkbook.Worksheets("skracovanie").Sort.SortFields.Add Key:=Range( _
' "F3:F100"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
' xlSortNormal
'With ActiveWorkbook.Worksheets("skracovanie").Sort
' .SetRange Range("A3:X100")
' .Header = xlGuess
' .MatchCase = False
' .Orientation = xlTopToBottom
' .SortMethod = xlPinYin
'.Apply
'End With
提前感谢您的帮助。即使这是不可能的,只是说“这不可能”是一个巨大的帮助。
【问题讨论】:
-
嗨!听起来你去那里是个好主意。分享minimal reproducible example,这将有助于我们为您提供帮助(因为我们将能够找出您可能出错的地方)。如果没有任何代码,您将无法通过 cmets 获得很多答案或建议。
-
你是如何填充组合框的?
-
@SamuelEverson 将代码添加到原始问题中。对不起,我是这个网站的新手
-
@norie Me.ComboBox1.List = Worksheets("palety").Range("E7:E1341").Value 我在 UserForm Initialize 上使用了这个