Tag: parameter passing

检查一个参数是否是一个特定的数组

我有两个数组,我想作为parameter passing给另一个Sub: Public arr1 As Variant Public arr2 As Variant Sub Main() arr1 = listSheet.Range("E2:G4").Value arr2 = listSheet.Range("H2:J60").Value call mySub(arr1) call mySub(arr2) End sub() 在“其他”子,我需要检查哪个数组传递,但没有任何下面的选项工作: sub mySub(ByRef myArr As Variant) if myArr=arr1 Then 'do actions end if 'and I also tried: if myArr is arr1 then 'do actions end if end sub 我怎么可以检查这个使用IF语句,或者这是可以以任何其他方式?

将Excel VBA数组传递给父级函数?

我不知道这个问题是否有意义。 示例给定:为单个单元格给出以下值(我们将其称为A1 ): Sub-value #1|Here's another sub-value #2|Yet again, last but not least, sub-value #3 。 我已经知道有人会告诉我,这是一个数据库应该使用的地方(相信我,我的专业是数据库pipe理,我知道,但我需要我的数据在这种方式)。 我的分隔符是| 。 现在说我想创build一个函数,将采取每个子值的LEN()并返回所有子值的AVERAGE() 。 如果我想创build一个函数来做到这一点,我可以使用split() ,取每个值,做一个LEN()并返回AVERAGE() 。 对于给出的例子,我们利用单元格B1 。 我已经在过去创build了类似的函数,可以通过下面的方法工作(虽然不是这个确切的方法),但是每次都需要分割和连接数组/单元格的值: =ARRAY_AVERAGE(ARRAY_LEN(A1,"|","|"),"|","|") 。 ARRAY_LEN(cell,delimiter[,Optional new_delimiter]) ARRAY_AVERAGE(cell,delimiter[,Optional new_delimiter]) 但是,我想知道是否可能有一个更dynamic的方法来做到这一点。 基本上,我想用一些自定义的VBA函数split()一个数组,将它传递给父函数,然后用一个将数组合并到一起的函数来包装数组。 这里是单元格函数的运行方式: =ARRAY_AVERAGE(ARRAY_LEN(ARRAY_SPLIT(A1,"|"))) 。 ARRAY_SPLIT(cell,delimiter)将拆分数组。 ARRAY_LEN(array)将返回ARRAY_LEN(array)中每个子值的长度。 ARRAY_AVERAGE(array)将返回ARRAY_AVERAGE(array)中每个子值的平均值。 由于此函数返回多个值的单个值,因此将采用假想的ARRAY_JOIN(array,delimiter) ,它将再次合并数组。 这需要在单元格中添加一个或两个额外的函数,但是也会降低单元格将要转换的迭代次数以及单个单元格值和VBAarrays的迭代次数。 你怎么看? 可能? 可行? 或多或less的代码效率?

如何使Excel从工作表的查询表中可靠地执行sp_executesql?

在MS Excel中,如果使用Microsoft Query创build一个QueryTable,并且您的SQL查询不能通过Microsoft Query进行可视化呈现,则不允许为该查询提供参数。 这是一个耻辱,所以有这个令人敬畏的技术 ,无论如何允许参数: {CALL sp_executesql (N'select top (@a) * from mytable', N'@a int', ?)} 您在ODBC CALL窗体中提供查询,并且它可以使用参数。 除非没有。 在某些计算机上,它完美地工作,在其他计算机上Excel尝试刷新查询表时引发错误: 对于SQL Native Client 10: Invalid parameter number 对于SQL Native Client 11: Procedure or function sp_executesql has too many arguments specified. 使用一个分析器,我可以看到Excel(实际上,当被Excel戳时,本地客户端)在执行sp_executesql之前执行此操作: exec sp_describe_undeclared_parameters N' EXEC sp_executesql N''<actual query>;'',N''<declared parameters>'',@P1 ' 这里@p1是稍后应该转到sp_executesql的参数占位符,这就是sp_describe_undeclared_parameters失败的地方。 它不指望sp_executesql任何自定义参数 – 只有两个固有参数, […]

问题添加另一个参数连接

我已经修改了一个工作簿中的几个连接,以反映一个附加参数。原来这些查询只是通过基于工厂代码的数据引入的,现在他们使用工厂名称或工厂代码。 在尝试修改我的第三个连接时,在input参数值input框中指定新参数后,我收到如下错误 “错误的参数types,Microsoft Excel期望提供与提供的不同types的值”。 然而,对于之前的连接,指定的单元格被接受,数据在刷新查询时更新。 请有人协助?

SSRS强制Report Manager内部和外部的参数

对于我来说,这已经是一个相当头疼的事了: 情景:我在报告pipe理器中有一个报告,也有订阅。 在未结订单字段中,已经请求如果点击它,则应该钻取到具有与那些未结订单相关的特定产品类别的未清销售订单报告。 因此,我创build了报告钻取操作,以使用产品类参数打开报告。 里面的报表pipe理器,当然,没有问题,工作如广告。 但订阅问题的Excel电子表格,当你点击相同的开放订单领域,它会给出一个404错误。 因此,我花了一些时间研究,并决定切换操作以对URL进行钻取,因为我至less可以使用默认参数(如果我只指向报告本身)显示打开的销售订单报告。 如何在参数中编码以从电子表格中提取产品类参数? 我已经尝试了以下URL的许多变体,但到目前为止没有任何工作,它不能被硬编码,因为有许多产品类可供select… http://myreportyplace:5765/Reports/Pages/Report.aspx?ItemPath=%2fSales%2fOpen+Sales+Orders&ProductClass=Fields!product_Class.value 我知道这是Fields!product_Class.value这就是问题…我必须强迫它看在Excel中的单元格,并仍然在报表pipe理器中工作?

如何在Excel Power Query中将参数化值传递给OData Feed

我创build了一个需要filter的OData服务。 此OData服务将通过Micorsoft Excel – Power Query中的OData Feed选项进行访问。 ODataurl – : http://176.0.11.79:8000/sap/opu/odata/sap/Z_SALES_REPORT_TUBES_SRV/et_sales_report_tubesSet?$ filter = Spmon eq'20161101' 现在我需要传递Spmon'20161101'的过滤值作为参数。 该值存在于同一个excel的另一个表中。 如何更改查询以允许从表单传递数据,而不是每次都更改URL。

VBA中的可选参数在执行时导致错误

我试图创build过程,传递2个参数,强制性和可选,之前我添加可选参数过程正确运行。 这里是代码: Sub a2(var As String, Optional num As Integer = 5) MsgBox (num) End Sub Sub start_a2() a2 ("null_text", 5) End Sub 当我传递任何第二个参数时,运行过程start_a2在第一行失败:Sub start_a2(),VBA高亮此行与黄色并返回语法错误,但不提供任何细节。 第二个论点是被大肆传递的?

无法从Excelmacros将parameter passing给存储过程

我有一个SQL Server中的存储过程,我无法编辑。 要在SQL Server中执行,必须传递一个参数。 如果使用“1”,程序将以打印模式运行,实际程序将运行为“0”。 我写下面的代码执行没有错误和日志捕获存储过程运行成功,但在打印模式。 请告诉我需要做的改变来传递参数'0' Sub RunProc() Dim con As ADODB.Connection Dim cmd As ADODB.Command Dim rs As ADODB.Recordset Set con = New ADODB.Connection Set cmd = New ADODB.Command Set rs = New ADODB.Recordset Set objSheet = ThisWorkbook.Sheets("Queries") strServerNAme = CStr(objSheet.Cells(4, 2).Value) strDatabase = CStr(objSheet.Cells(5, 2).Value) strProcName = CStr(objSheet.Cells(6, 2).Value) ' Log into […]

VBA传递date参数到SQL Server存储过程

我面临一个date参数从EXCEL VBA代码传递到SQL Server存储过程的问题。 存储过程采用两个date参数@FromDate和@ToDate 。 从Excel我想执行此过程与从单元格中获取的date值。 问题在于,从单元格到过程的date是以"dd/mm/yyyy"的格式传递的,而不pipe我在Excel单元格中做什么格式更改。 而SQL过程则接受"yyyy-mm-dd"或"yyyy-mon-dd"或"yyyy/mm/dd"或"dd-mon-yyyy"格式。 该过程抛出一个错误: “从date和/或时间转换date和/或时间从string转换失败”date从Excel中传递(格式“dd / mm / yyyy” 我使用的vba代码是(参考https://www.mssqltips.com/sqlservert…to-sql-server/ ) Private Sub CommandButton1_Click() Dim FromDate As Date Dim ToDate As Date FromDate = Format(Sheets("Sheet1").Range("B1").Value, "yyyy-mm-dd") 'Pass value from cell B1 to SellStartDate variable ToDate = Format(Sheets("Sheet1").Range("B2").Value, "yyyy-mm-dd") 'Pass value from cell B2 to SellEndDate variable MsgBox FromDate MsgBox ToDate […]

vba excel错误“通过引用参数types不匹配”时传递键作为string参数

我在下面的子testing()中遇到“通过参数types不匹配”错误: Public Function GetOtherDict(k As String, dict As Dictionary) As Dictionary Dim otherDict As New Dictionary curItem = dict.Item(k) otherDict.Add curItem, curItem Set GetOtherDict = otherDict End Function Public Sub Test() Dim dict As New Dictionary dict.Add "a", 1 dict.Add "b", 2 For Each k In dict.Keys Dim otherDict As Dictionary Dim curKey As String […]