将表格响应从一张excel更新到另一张
我已经在excel上创建了一个简单输入的基本数据输入表单,希望该输入能够更新并存储在另一张表(表格格式)上的现有数据库中 这是我在网上找到并修改的当前代码:将表格响应从一张excel更新到另一张,excel,vba,Excel,Vba,我已经在excel上创建了一个简单输入的基本数据输入表单,希望该输入能够更新并存储在另一张表(表格格式)上的现有数据库中 这是我在网上找到并修改的当前代码: Function ValidateForm() As Boolean SellerSKU.BackColor = vbWhite Description.BackColor = vbWhite ValidateForm = True If Trim(SellerSKU.Value) = "&quo
Function ValidateForm() As Boolean
SellerSKU.BackColor = vbWhite
Description.BackColor = vbWhite
ValidateForm = True
If Trim(SellerSKU.Value) = "" Then
MsgBox "SKU can't be left blank.", vbOKOnly + vbInformation, "SKU"
SellerSKU.BackColor = vbRed
SellerSKU.Activate
ValidateForm = False
ElseIf Trim(Description.Value) = "" Then
MsgBox "Description can't be left blank.", vbOKOnly + vbInformation, "Description"
Description.BackColor = vbRed
Description.Activate
ValidateForm = False
End If
End Function
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
SellerSKU.Value = ""
SellerSKU.BackColor = vbWhite
Description.Value = ""
Description.BackColor = vbWhite
End Sub
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Dim iRow As Long
iRow = Sheets("Reference Sheet (Order Hist)").Range("A1048576").End(xlUp).Row + 1
If ValidateForm = True Then
With ThisWorkbook.Sheets("Reference Sheet (Order Hist)")
.Range("A" & iRow).Value = SellerSKU.Value
.Range("C" & iRow).Value = Description.Value
End With
Call Reset
Else
Application.ScreenUpdating = False
Exit Sub
End If
Application.ScreenUpdating = True
End Sub
但是,当我在数据输入表单上点击“Enter”时,另一张表上的表不会得到更新。我还想问,是否有可能在每次成功输入时清除表格
我是VBA新手,希望能得到一些帮助
非常感谢这对我很有效。重新组织并删除了一些重复
Private子命令按钮2\u单击()
朦胧如长,瓦莱罗如弦
valErrors=ValidationErrors()'检查表单
如果Len(valerors)=0,则
'无错误-添加数据
使用此工作簿。工作表(“参考表(订单历史)”)
iRow=.Cells(.Rows.Count,“A”).End(xlUp).行+1
.Range(“A”&iRow).Value=SellerSKU.Value
.Range(“C”&iRow).Value=Description.Value
以
ResetForm调用关键字已弃用。。。
其他的
MsgBox“表单条目中的一个或多个错误:”&vbLf&vbLf&VALERORS_
vbOKOnly+VBEQUOTION,“检查表单数据”
如果结束
端接头
'检查表单并返回所有错误的列表
函数ValidationErrors()作为字符串
作为字符串的Dim msg
选中非空SellerSKU,“SKU不能为空”,msg
选中非空描述,“描述不能留空”,msg
ValidationErrors=msg
端函数
'实用工具子-检查控件是否有文本,如果缺少则标记为错误,
'并在整个验证消息中添加一些文本
子检查非空(cntrl作为对象,msgErr作为字符串,ByRef msg作为字符串)
作为布尔函数的Dim-iser
如果没有内容,ISER=Len(修剪(cntrl.Value))=0'真
错误标志cntrl,ISER
如果ISER和Len(msgErr)>0,则
msg=msg&IIf(Len(msg)>0,vbLf,“”)&msgErr'附加此错误
如果结束
端接头
私有子命令按钮1_单击()
重置形式
端接头
'清除文本框和任何错误标志
附属表格(
SellerSKU.Value=“”
ErrorFlag SellerSKU,错误
Description.Value=“”
ErrorFlag描述,False
端接头
'将控件标记为有问题(将False传递给第二个参数以清除标记)
子ErrorFlag(cntrl作为对象,可选HASRERROR作为布尔值=True)
cntrl.BackColor=IIf(hasrerror、vbRed、vbWhite)
端接头
如果ValidateForm=True,那么什么是呢
在做什么?看起来很像您是否编写了如图所示的ValidateForm
函数?@TimWilliams是的,我从那里得到了代码!为了清晰起见,我已经更新了我的帖子以显示完整的代码。是我弄错了吗?@BigBen很抱歉搞混了,我只发布了部分代码,我已经更新了我输入到帖子中的完整代码。我们不知道ValidateForm
在做什么?正如Tim所说,您是否编写了ValidateForm
函数?非常感谢!代码运行良好,但出于某种原因,它只添加了从第26189行开始的数据,但我的表以17461结尾。如何从17461中获取要添加到代码中的数据?那里一定有一些“不可见”的内容…尝试从可乐底部使用Ctrl+向上,看看它在哪里停止谢谢。还有一个问题,如果我有一个带有=now()函数的普通单元格,是否也可以将日期作为值传递到其他数据表?您可以在VBA中直接使用now()。它不需要在牢房里。例如.Range(“D”和iRow).Value=Now