2017-01-02 55 views
-1

我有一个输入框,用户正在输入一个值。我想获取用户输入的值并将其添加到正在从记录集读取的值中。我已经尝试过这种语法,它不会为我引发错误,但问题是,该值未被添加到记录集的值中。为了进行简单的加法计算,我应该改变什么?添加值从记录集+值从输入框通过VBA

Public Function AddToValue() 
Dim value2 As Variant 
Dim ExportRecordSet As DAO.Recordset 
Dim excelWS As Object 
Dim xl As Object 
Dim wb As Object 
Dim TemplateWB As String 
Dim row As Integer 

value2 = InputBox("Enter Value To Add:", "VBA InputBox Function") 

Set xl = CreateObject("Excel.Application") 
TemplateWB = "C:\Test\Testwb.xlsx" 
Set wb = xl.Workbooks.Add 
Set excelWS = wb.Worksheets(1) 
excelWS.Name = "AddedFromCode" 
xl.Application.Visible = True 

Set ExportRecordSet = db.OpenRecordset(" Select Total FROM localtesttable;") 

If Not ExportRecordSet.EOF Then 
While Not ExportRecordSet.EOF 

    excelWS.Cells(row, 5).Value = ExportRecordSet("Total")+value2 

Wend 
End If 

wb.SaveAs 

wb.Close 

End Function 

编辑
每注释从@KenWhite - 我要澄清,我想在上面的语法来实现什么:

1)获取userinput为值2
2)阅读来自现场的数值总计
3)向Excel写入总计值+值2

在那里我看到用编辑#2
链接两个If Not EOFWhile Not EOF

Looping DAO Recordsets

+1

很多你的代码是没有感。 'row = 1',打开数据集,'row = row + 1'没用。那么'如果不是EOF,那么不是EOF'; if语句是无用的冗余。如果你在Eof,那么这段时间不会执行,所以根本没有必要。目前还不清楚你实际想要做什么。 –

+0

@KenWhite - 我想要1)获取用户输入的值2 - 2)从字段Total中读取值,3)向Excel写入总值+值2 –

+0

@KenWhite - 回应您的?关于使用If ... EOF和While ... EOF - 就我的理解而言,您将首先执行if ... EOF以验证ExportRecordSet具有记录。 - > While ... EOF遍历记录,如果达到ExportRecordSet的末尾,则此方法将返回true并离开while循环。我用这个作为语法的基础,这是关于如何编码的标记? http://www.accessallinone.com/looping-through-a-recordset/ –

回答

0

您需要提前行和记录:

Public Function AddToValue() 

    Dim ExportRecordSet As DAO.Recordset 
    Dim excelWS As Object 
    Dim xl As Object 
    Dim wb As Object 
    Dim TemplateWB As String 
    Dim row As Integer 
    Dim value2 As String 

    value2 = InputBox("Enter Value To Add:", "VBA InputBox Function") 

    Set xl = CreateObject("Excel.Application") 
    TemplateWB = "C:\Test\Testwb.xlsx" 
    Set wb = xl.Workbooks.Add 
    Set excelWS = wb.Worksheets(1) 
    excelWS.Name = "AddedFromCode" 
    xl.Application.Visible = True 

    Set ExportRecordSet = db.OpenRecordset("Select Total FROM localtesttable;") 
    ' Set start row. 
    row = 1 
    While Not ExportRecordSet.EOF   
     excelWS.Cells(row, 5).Value = ExportRecordSet("Total") + Val(value2) 
     row = row + 1 
     ExportRecordset.MoveNext 
    Wend 

    wb.SaveAs 
    wb.Close 

End Function