Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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更新到另一张_Excel_Vba - Fatal编程技术网

将表格响应从一张excel更新到另一张

将表格响应从一张excel更新到另一张,excel,vba,Excel,Vba,我已经在excel上创建了一个简单输入的基本数据输入表单,希望该输入能够更新并存储在另一张表(表格格式)上的现有数据库中 这是我在网上找到并修改的当前代码: Function ValidateForm() As Boolean SellerSKU.BackColor = vbWhite Description.BackColor = vbWhite ValidateForm = True If Trim(SellerSKU.Value) = "&quo

我已经在excel上创建了一个简单输入的基本数据输入表单,希望该输入能够更新并存储在另一张表(表格格式)上的现有数据库中

这是我在网上找到并修改的当前代码:

   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