excel使用宏编写简单算法后运行无输出结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel使用宏编写简单算法后运行无输出结果相关的知识,希望对你有一定的参考价值。

程序如下,在excel宏里面编写的程序,运行宏以后没有显示结果,也不报错,希望各位大侠帮个忙~
Sub mymacro()
Dim A1, A2, A3 As Integer
A1 = Cells(1, 1).Value
A2 = Cells(1, 2).Value
A2 = Cells(1, 3).Value
If A2 <> 0 Then
A3 = A1 + A2
End If
End Sub

参考技术A 首先如楼上所言,A2重复赋值了。我想楼主您的意思是在cells(1,2)的值不等于0的情况下,让cells(1,3)等于cells(1,2)和cells(1,1)的加和。
楼主可能想让a1,a2,a3分别代替三个单元格,然后操作它们,但是参数的付给是单向的,没法改变单元格的值。程序是运行了的,a1,a2,a3都有值了。
如果楼主您是想求加和的话,建议这样改下:
Sub mymacro()
if activesheet.cells(1,2).value<>0 then
activesheet.cells(1,3)=activesheet.cells(1,1).value+activesheet.cells(1,2).value
end if
End Sub
参考技术B 你之前A1中有没有数据呢?如果有的Sub mymacro()
Dim A1, A2, A3 As Integer
A1 = Cells(1, 1).Value
A2 = Cells(1, 2).Value
A3 = Cells(1, 3).Value
If A2 <> "0" Then
A3 = A1 + A2
Cells(1, 3).Value = A3
End If
End Sub
这样才对。本回答被提问者采纳

列表框中的列表在运行宏后消失

我有简单的数据库,有两个表,一个查询(连接表)和一个查询表单,包括文本框和列表框(见下图)。

form example

我正在尝试使用文本框在键入时搜索列表框(如此视频中所示:youtube video)

我复制了代码(很少编辑名称),但由于某种原因,它会使整个列表中断(松散所有条目)并且不起作用(下面键入后的结果截图)。即使在删除条目后,列表也不会恢复正常。

broken list

我做错了什么?

我的代码:

Private Sub searchBox_Change()

    Dim strSource As String
    strSource = "SELECT  Paraiškos ID, Veikliosios m pavadinimas, Sugalvotas VP pavadinimas" & _
     "FROM Oldsys_Main" & _
     "Where Paraiškos ID Like '*" & Me.searchBox.Text & "*' " _
     & "Or Veikliosios m pavadinimas Like '*" & Me.searchBox.Text & "*' " _
     & "Or Sugalvotas VP pavadinimas Like '*" & Me.searchBox.Text & "*' "

    Me.oldListBox.RowSource = strSource
End Sub

另一个(现在是单一的)问题:为什么第五列结果是数字?它应该是文本,是因为5列与另一个表链接,是否可以使它显示文本而不是ID?

答案

这不是有效的SQL语法。标识符(例如列名称)不允许使用除_之外的空格或特殊字符。如果有,则必须将名称括在方括号中。

FROM之前以及Oldsys_MainWHERE之间也有一个空间缺失,因为换行符在VBA代码本身内,但不在构造的字符串内。如果要在字符串中添加换行符,可以使用"first line" & vbCrLf & "second line"进行换行。但SQL在单行上运行良好。

Dim strSource As String, strSearch As String

strSearch = Replace(searchBox.Text, "'", "''")
strSource = "SELECT [Paraiškos ID], [Veikliosios m pavadinimas], [Sugalvotas VP pavadinimas] " _
 & "FROM Oldsys_Main " _
 & "WHERE [Paraiškos ID] LIKE '*" & strSearch & "*' " _
 & "Or [Veikliosios m pavadinimas] LIKE '*" & strSearch & "*' " _
 & "Or [Sugalvotas VP pavadinimas] LIKE '*" & strSearch & "*' "

此外,用两个单引号替换搜索文本中的单引号以转义它们。像Let's go这样的文字变成了'Let''s go'


您可以像这样测试SQL:

  • 使用Ctrl-G打开立即窗口。
  • 复制将代码粘贴到其中,这相当于Debug.Print,用实际文本字符串(例如strSearch)替换变量"est"。 ?“选择[应用程序ID],[活动M名称],[发明的VP名称]”_ &“FROM Oldsys_Main”_ &“WHERE [Application ID] LIKE'*”&“est”&“*'”_ &“或[有效M名称] LIKE'*”&“est”&“*'”_ &“或者[发明的VP名称] LIKE'*”&“est&”*'“ 结果将像这样打印: SELECT [应用程序ID],[活动M名称],[发明的VP名称] FROM Oldsys_Main WHERE [应用程序ID] LIKE'* est *'或[活动M的名称] LIKE'* est *'或[发明的安全名称] LIKE' * est *'
  • 将此结果复制到剪贴板并在设计视图中创建新查询。切换到SQL视图并将结果粘贴到其中。
  • 现在执行查询。您将看到它是否有效,或者是否收到错误消息。此外,缺少空格等语法错误也很明显。

以上是关于excel使用宏编写简单算法后运行无输出结果的主要内容,如果未能解决你的问题,请参考以下文章

Pycharm中如何使用宏快速编写代码

我想用Excel宏编写代码来对SQL数据库进行连接和操作,请教详细的步骤或方法,重分!!!!一定加分

Excel合并计算总是提示无数据被合并计算?

Excel VBA(宏):添加宏

Excel简单使用宏

EXCEL如何编写宏,将列变量为A的字符型数字,自动转换为数值型并替代原单元值?