使用写入SQL查询的VBA在Excel中单击按钮后,单元格值不会更新

时间:2015-06-05 11:22:47

标签: sql excel vba cell

遇到VBA问题。有一个用VBA编写的SQL,它从数据库中获取数据并将其复制到Excel。但是有些值是空的,需要从Excel电子表格中存在这些值的其他列数据中填充。

我写了这段代码:

For Each cell In Range("AI2:AI999")
    'test if cell is empty
    If cell.Value = "" Then
        cell.Value = "temp"
    End If
Next

试图包含' temp'单元格为空的字符串(从sql读取的字符串)。

当我从vba窗口运行sub时,它们被包含在报告中。但是当试图在按钮点击时从excel运行sub时,它没有填充" temp"空细胞。怎么可能解决这个问题?

完整代码:



Sub ConnectoOracleServer()
Dim con As ADODB.Connection 
Dim rec As ADODB.Recordset
Dim cmd As ADODB.Command 
Dim sql As String
Dim par1 As String 
Dim par2 As String
par1 = (Sheets("Input").Cells(2, "A"))
par2 = (Sheets("Input").Cells(2, "B"))
Set con =New ADODB.Connection
Set rec = New ADODB.Recordset 
Set cmd = New ADODB.Command Sheets("Output").Range("A2:AJ99999").ClearContents 
con.Open 
sql Set rec = con.Execute ("my sql function") 
If Not rec.EOF Then
        Sheets("Output").Range("A2").CopyFromRecordset rec
        rec.Close
        MsgBox "DATA READY!", vbInformation
    Else
        MsgBox "NO ITEMS RECONCILED ON SELECTED DATES!", vbCritical
    End If
If CBool(con.State And adStateOpen) Then con.Close
Set rec = Nothing
Set con = Nothing 

'trying to overwrite empty cells from sql to proper values
For Each cell In Range("AI2:AI999") 
   'test if cell is empty 
       If cell.Value = "" 
          Then cell.Value = "tp" 
       End If
Next
End Sub




那么应该如何将一些值插入空单元格?

0 个答案:

没有答案