我有下面的子程序,用于检查单独的工作表,如果在textbox8中创建的编号已经存在,此刻有一个消息框,警告用户部件号已经存在,则必须单击“确定”,然后编号递增用1重复该过程,直到找到唯一编号。 这是与其他一些数据一起写入工作表的。

我需要做的是删除消息框,以便它会自动搜索并找到下一个可用的号码。

我在子代码中添加了以下代码,但这没有效果:

Application.DisplayAlerts = False
  MsgBox "This already exists"
  SendKeys "{ENTER}"
Application.DisplayAlerts = True

'Create part number and check
Private Sub CommandButton2_Click()


With TextBox26
   If myreset = True Then
      .Tag = 0
      myreset = False
   End If
  .Tag = Val(.Tag) + 1
  .Text = "-" & VBA.Format(Val(.Tag), "0000")
End With


Dim iNum(1 To 8) As String
iNum(1) = TextBox24.Value
iNum(2) = TextBox25.Value
iNum(3) = TextBox26.Value


TextBox8.Value = iNum(1) + iNum(2) + iNum(3)

'check article exists

Dim emptyRow As Long
Dim rcnt As Long
Dim i As Long



ActiveWorkbook.Sheets("existing").Activate

rcnt = Sheets("existing").Range("A" & Rows.Count).End(xlUp).Row


For i = 2 To rcnt

If TextBox8.Text = Sheets("existing").Range("A" & i).Value Then
Application.DisplayAlerts = False
  MsgBox "This already exists"
  SendKeys "{ENTER}"
 Application.DisplayAlerts = True

 Exit Sub
 End If
Next

Range("A1").Select
Do
If IsEmpty(ActiveCell) = False Then
  ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True
ActiveCell.Value = TextBox8.Text

#1楼 票数:0

要删除消息框,您需要做的就是删除代码中的以下几行

Application.DisplayAlerts = False
  MsgBox "This already exists"
  SendKeys "{ENTER}"
 Application.DisplayAlerts = True

我不确定代码的第一部分在做什么。 如果您能提供一些例子,我可以帮助您。 但是我已经合理化了第二部分,现在可以用更少的代码实现原始代码想要实现的目标。

'check article exists

Dim emptyRow As Long
Dim rcnt As Long
Dim i As Long
Dim varProdCode  As Long

ActiveWorkbook.Sheets("existing").Activate
varProdCode = TextBox8.Text
rcnt = Sheets("existing").Range("A" & Rows.Count).End(xlUp).Row

Do Until varProdCode = 0
    For i = 2 To rcnt
        If varProdCode = Sheets("existing").Range("A" & i).Value Then
            varProdCode = varProdCode + 1
            Exit For
        Else
            Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = varProdCode
            varProdCode = 0
            Exit Sub
        End If
    Next
Loop

#2楼 票数:0

这是有效的代码

 Private Sub CommandButton2_Click() With TextBox26 If myreset = True Then .Tag = 0 myreset = False End If .Tag = Val(.Tag) + 1 .Value = VBA.Format(Val(.Tag), "0000") End With Dim emptyRow As Long Dim rcnt As Long Dim c As Long rcnt = Sheets("existing").Range("A" & Rows.Count).End(xlUp).Row For c = 2 To rcnt Dim iNum(1 To 8) As String iNum(1) = TextBox24.Value iNum(2) = TextBox25.Value iNum(3) = TextBox26.Value 'check if article exists ActiveWorkbook.Sheets("existing").Activate If Sheets("existing").Range("A" & c).Value = iNum(1) & iNum(2) & "-" & iNum(3) Then TextBox26.Value = TextBox26.Value + 1 iNum(3) = TextBox26.Value End If Next c 'create article number TextBox8.Value = iNum(1) + iNum(2) + "-" + iNum(3) 'select first column Range("A1").Select 

  ask by ian hooton translate from so

未解决问题?本站智能推荐:

2回复

查找下一个空白单元格为过去的值

我正在尝试编写一个宏,可以节省很多时间来修复旧的宏。 我要尝试做的是将位于“ Mono risco 3”中的值与“ MonoBi”进行比较,如果发现该值我想将某些值从“ MonoBi”更改为“ Bi recurso”。 我想在已经存在的列表的末尾粘贴这些值。 我认为有可能,但我不知道如何。
2回复

VBA/Excel在单元格中查找字符串以确定下一个单元格的值

我需要在一个单元格中找到一个字符串,如果找到了该字符串,则它旁边的单元格必须将该字符串放在下一个单元格中。 用外行的话来说: 这必须贯穿整个表,即C4和D4,C5和D5等。 提前致谢
2回复

填充下一个空单元格,其值大于加1,直到填充所有行

我正在为销售点系统创建一个电子表格。 在“销售”表单上,我有一个销售完成时的命令按钮。 点击后,该表中的所有数据都会移动到另一张“今天的销售”中,我需要有关vba代码的帮助,才能为每个已完成的销售分配收据编号。 当天的首次销售应该是收货号码。 1,然后每个上升1.该命令按钮上的一些代码如
1回复

如果单元格包含“文本”,则拖动复制值,直到下一个包含“文本”的单元格

嘿,我正在尝试创建一个宏来对客户数据进行排序,该宏由A列中的标头(“ CUSTOMER:ABC”)和有关该客户的数据行组成,最后是A列中的总标头(“ TOTAL”)包含该行的总数据。 对整个客户列表重复此过程。 我要做的是创建一个宏,该宏模拟将客户名称复制到包含总标题的单元格(包括该单元格)
1回复

ExcelVBA复制在常规值上加粗的单元格值,直到下一个粗体值,然后在常规值上复制该值等

大家好,我在VB中使用Excel 2010 好的,所以我有一个问题,我必须将一列中的粗体单元格值复制到另一列中,并且要复制相同的值,直到它再次击中包含该粗体单元格的行,然后该值接管并复制到另一个加粗值等,并复制一个数的2位数字时(或字符作为我认为号被存储为文本)应被删除。 能做到吗?
2回复

在aacolunm中查找下一个空单元格

我有一个工作簿,每个工作表有数百个条目,并且我有代码来查找列中的下一个空闲单元格。 该代码可以在一张纸上工作,而不能在另一张纸上工作。 我知道这很简单,但我不知道是错的。
1回复

查找范围之间的值,填写下一个单元格

我正在寻找一种方法来复制范围内找到的所有数据并将其粘贴到下一列中。 A =文字数据 B =随机数,但始终从1开始 C =一些数据 D =我需要的解决方案 当B列中的值为1时,则在C列中找到值( Range B:B从1到1),将其复制到D 我已经尝试过使用公式,但这限制了深
3回复

基于下一个单元格值的ExcelVBA条件格式

我正在尝试在Excel中针对字体大小进行一些条件格式设置,但由于无法从格式菜单中完成,因此需要使用VBA完成。 我有一个范围为B6的行,但是行数很多,我想查看它旁边的单元格,看看它是否为空白(C列)。 如果是,则将单元格格式化为粗体和11pt。 如果不是空白,则必须为9pt。 目前,