vba - EXCEL VBA ,仅在条件验证时才允许
问题描述
我需要一个条件来查看某个项目是否在 X wharehouse(CC) 中有库存,如果没有库存,则用户可以移动是否有库存,如果没有库存,则该项目无法移动。现在我有一个条件,只允许从 1 到最大库存。
last = Application.ThisWorkbook.Worksheets("Registos").Range("A65536").End(xlUp).Row
For i = 1 To last
REFERENCIA = Application.ThisWorkbook.Worksheets("Registos").Cells(i, 8)
ENTRADAeSAIDA = Application.ThisWorkbook.Worksheets("Registos").Cells(i, 12)
CC = Application.ThisWorkbook.Worksheets("Registos").Cells(i, 6)
下面是我的条件,假设要检查签入,如果没有签入就不能结帐,我的问题是我第一次运行 CommandButton 它不起作用,所以会有结帐没有任何检查在,并且在我第一次运行 CommandButton 之后,它可以工作,但不能正常工作,因为即使我有库存,它也不允许我移动任何东西
If registos.ComboBox1 = "SAÍDA" Then
If REFERENCIA <> registos.TextBox1 And CC = registos.Label11.Caption Then
MsgBox "Não existe em stock!"
GoTo fim
Else: GoTo salto_1
End If
End If
在这里结束条件
salto_1:
If REFERENCIA = registos.TextBox1 And registos.ComboBox1 = "SAÍDA" Then
Worksheets("registos").Select
ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=8, Criteria1:= _
registos.TextBox1.Text 'Filtrar referência
ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=6, Criteria1:= _
registos.Label11.Caption 'Filtrar CC
ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=12, Criteria1:= _
"ENTRADA" 'Filtrar Entrada
'Somar quantidades de peças de Entrada
xty100 = ThisWorkbook.Worksheets("calculos").Range("A1")
ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=12, Criteria1:= _
"SAÍDA" 'Filtrar Saída
'Somar quantidade de peças de saída
xty101 = ThisWorkbook.Worksheets("calculos").Range("A1")
sumfinal = xty100 - xty101 'Calculo do Stock
ThisWorkbook.Worksheets("calculos").Range("A20") = Format(registos.TextBox4, "@")
xtybx4 = ThisWorkbook.Worksheets("calculos").Range("A20")
If xtybx4 <= sumfinal And xtybx4 > 0 Then
GoTo salto_2
Else
MsgBox "Não foi possível concluir o movimento!Stock " & sumfinal & ""
GoTo fim
End If
End If
Next i
salto_2:
If registos.TextBox3 = "" And registos.TextBox1 <> "" And registos.TextBox2 <> "" And registos.TextBox4 <> "" And registos.ComboBox5 <> "" Then
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 1) = Now() 'data
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 5) = registos.Label20.Caption 'ano fiscal
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 6) = registos.Label11.Caption 'cc
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 7) = a1logiin.TextBox1 'operario
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 8) = registos.TextBox1 'referencia formata
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 9) = registos.TextBox2 'ordem
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 11) = Format(registos.TextBox4, "#") 'quantidade
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 12) = registos.ComboBox1 'ENTRADA/SAIDA
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 13) = registos.ComboBox5 ' ESTADO
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 14) = Format(registos.ComboBox3, "#") 'CODIGO DEFEITO
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 16) = registos.ComboBox6 'ORIGEM DEFEITO
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 1, 17) = registos.TextBox5 'OBSERVAÇÕES
MsgBox "Dados introduzidos com sucesso!"
'GoTo fim
GoTo fim2
End If
MsgBox "Insira todos os dados"
GoTo fim
fim2: If registos.ComboBox1 <> "SAÍDA" Then
GoTo fim
End If
If registos.ComboBox1 = "SAÍDA" And registos.TextBox3 = "" And registos.TextBox1 <> "" And registos.TextBox2 <> "" And registos.TextBox4 <> "" And registos.ComboBox5 <> "" And registos.ComboBox2 <> "" Then
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 1) = Now() 'data
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 5) = registos.Label20.Caption 'ThisWorkbook.Worksheets("anofiscal").Range("A1") 'ano fiscal
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 6) = registos.ComboBox2 'cc
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 7) = a1logiin.TextBox1 'operario
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 8) = registos.TextBox1 'referencia formata
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 9) = registos.TextBox2 'ordem
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 11) = Format(registos.TextBox4, "#") 'quantidade
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 12) = "ENTRADA" 'Define a saída de um como a entrada de outro
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 13) = registos.ComboBox5 ' ESTADO
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 14) = Format(registos.ComboBox3, "#") 'CODIGO DEFEITO
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 16) = registos.ComboBox6 'ORIGEM DEFEITO
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 17) = registos.TextBox5 'OBSERVAÇÕES
Application.ThisWorkbook.Worksheets("Registos").Cells(last + 2, 18) = registos.ComboBox7 'detalhe produção
GoTo fim
End If
If contador = 1 Then
MsgBox "Foi efetuado o registo de " & contador & " referência!", vbInformation
' Else
' MsgBox "Foi efetuado o registo de " & contador & " referências!", vbInformation
End If
contador = 0
GoTo fim:
fim:
End Sub
解决方案
推荐阅读
- recursion - 将递归转化为分而治之
- python - 如何仅对列表中的正数进行排序?
- django - Django Celery shared_task 单例模式
- flutter - 如何显示键盘?
- c# - 使用类将复杂的 Json 转换为 C# 对象反序列化
- javascript - Selenium 成功地点击了一个元素,但实际上它没有被点击。这只发生在并行执行期间。否则它工作正常
- typescript - TS Abstract 方法实现可以定义任何联合类型的元素作为参数
- swiftui - 如何更改基于 SwiftUI 文档的应用程序中的文件名?
- android - 包括与 Gradle 模块元数据的瞬态依赖关系
- oracle - 设置种子以在 Oracle SQL 中从 0 到 1 之间的均匀分布生成随机值