Tag: excel vba

Excel中的RAND()函数对于Monte Carlo模拟有多好?

我正在Excel中使用3个variables实施蒙特卡罗模拟。 我用RAND()函数从Weibull分布(长尾)中抽样。 应用于样本的函数是非线性但平滑的(exp,ln,cos等)。 每个样本的结果是合格/不合格,总体结果是失败的概率。 在MathCad中我也通过数值积分和Monte Carlo实现了这一点,两次都得到相同的结果。 MathCad使用(我认为)Mersenne Twister随机数发生器。 我的Excel电子表格得到一致的不同结果(即总是更大)。 我检查过的方程式是一样的。 Excel使用什么样的随机数生成器,它有多好? 这可能是我的问题的根源吗? 我假设exp,cos等的Excel实现都可以。 最后,有没有一种方法来实现蒙特卡洛来减轻特定随机数发生器的(已知的)不良性质? (我听说马尔可夫链,随机散步等等,但是对这些并不了解) 非常感谢。

将代码分配给dynamic创build的button

我试图得到一个button,我已经dynamic创build一个Excel用户窗体来运行一个叫做transfer的macros,我已经写在我的项目的“模块”部分的Module 1 。 下面我粘贴了我已经写在代码中的代码,它实际上是在框架中创build了Transfer to Sheetbutton( 我也是dynamic创build的 ),但由于某种原因,当我运行VBA时, 438 error消息说Object doesn't support this property or method 。 有谁可以告诉我如何解决这个问题? 代码如下: Dim framecontrol1 As Control Set workitemframe = Controls.Add("Forms.Frame.1") With workitemframe .Width = 400 .Height = 400 .Top = 160 .Left = 2 .ZOrder (1) .Visible = True End With workitemframe.Caption = "Test" Set framecontrol1 = workitemframe.Controls.Add("Forms.commandbutton.1") […]

Excel图表不会更新

我有一个Excel文档(2007年)与图表(集群列),从包含计算值的单元格获取其数据系列 计算的值不会直接改变,而只是由于工作表中的其他单元格发生更改 当我更改工作表中的其他单元格时,将重新计算Data Series单元格,并显示新值 – 但基于此Data Series的Chart将拒绝自动更新 我可以通过保存/closures来更新图表,或者切换其中一个设置(例如反转x / y轴然后放回),或者通过重新select数据系列 我在网上find的每个解决scheme都不起作用 是的,我将“计算”设置为自动 Ctrl + Alt + F9更新一切正常,除了图表 我已经多次在不同的计算机上重新创build图表 我已经尝试过VBA脚本: Application.Calculate Application.CalculateFull Application.CalculateFullRebuild ActiveWorkbook.RefreshAll DoEvents 这些都没有更新或刷新图表 我注意到,如果我input数据系列的实际数字而不是计算,它将更新图表 – 这就好像Excel不想识别计算中的更改 有没有人经历过,或知道我可以做什么来解决这个问题? 谢谢

使用VB将excel工作表保存为CSV文件名+工作表名称

我很新的VB编码,我试图保存多个Excel文件工作表到CSV,我不知道这样做多张,但我find了一种方法来做单个文件。 我发现这个网站上的代码是非常有用的,我想要做的,唯一的问题是文件与工作表名称保存,但我想保存与原始文件和工作表名称,如filename_worksheet name ,我试图自己做这件事,但不断发生错误,请问我是否做错了? 我正在使用的代码如下所示: Public Sub SaveWorksheetsAsCsv() Dim WS As Excel.Worksheet Dim SaveToDirectory As String Dim CurrentWorkbook As String Dim CurrentFormat As Long CurrentWorkbook = ThisWorkbook.FullName CurrentFormat = ThisWorkbook.FileFormat ' Store current details for the workbook SaveToDirectory = "H:\test\" For Each WS In ThisWorkbook.Worksheets WS.SaveAs SaveToDirectory & WS.Name, xlCSV Next Application.DisplayAlerts = False ThisWorkbook.SaveAs […]

有VBA开发的替代IDE吗?

我正在使用Excel 2003和用于编程VBA的内置IDE,但很多事情都让我感到困惑。 显然,VBA IDE的内置特性是一个很大的优点。 那里有(免费的)替代品吗?

如何从vba调用xll插件函数?

我有一个第三方XLL插件,我想在我自己的自定义VBA函数中包装。 我如何从我的代码调用第三方function? 谢谢

VBA:如何显示一个错误消息就像标准的错误信息有一个“debugging”button?

和往常一样,我使用On Error Goto语句创build一个error handling程序,在那里我放了几行清理代码并显示错误消息,但现在我不想失去默认处理程序的舒适性,这也指向我发生错误的确切位置。 我怎样才能做到这一点? 提前致谢。

VBAmacros在32000行后崩溃

我有一个VBAmacros,从一个工作表中的行复制到另一个基于查找3列中的单元格中的值。 macros工作,但到达行32767时崩溃。在这一行没有公式或特殊格式。 此外,我已经把这一行,但它仍然在该行号崩溃。 这是Excel中的限制吗? 正在处理的工作表中有43000个 因此,我问我的macros有什么问题,以及如何让它达到工作表的末尾: Dim LSearchRow As Integer Dim LCopyToRow As Integer Dim wks As Worksheet On Error GoTo Err_Execute 对于每个工作表中的工作表 LSearchRow = 4 LCopyToRow = 4 ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count) Set wksCopyTo = ActiveSheet wks.Rows(3).EntireRow.Copy wksCopyTo.Rows(3) While Len(wks.Range("A" & CStr(LSearchRow)).Value) > 0 If wks.Range("AB" & CStr(LSearchRow)).Value = "Yes" And wks.Range("AK" & CStr(LSearchRow)).Value = "Yes" […]

将整个工作表复制到Excel 2010中的新工作表

我发现了类似的问题,在一个工作簿中复制整个工作表并将其粘贴到另一个工作簿中,但是我只是简单地复制整个工作表并将其粘贴到新的工作表中 – 在同一个工作簿中。 我正在将2003 .xls文件转换为2010 .xlsm,而用于在工作表之间复制和粘贴的旧方法不会粘贴正确的行高。 我最初的解决方法是循环遍历每一行,并从我复制的工作表中获取行高,然后循环并插入工作表中我所粘贴的行高的值,但这种方法的问题是工作表包含的button会生成更改行编号的新行,并且工作表的格式使得所有行不能只是一个宽度。 我真的希望能够做的只是复制整个工作表并粘贴它。 以下是2003版本的代码: ThisWorkbook.Worksheets("Master").Cells.Copy newWorksheet.Paste 我很惊讶,转换为.xlsm导致这个现在打破。 任何build议或想法将是伟大的。

使用VBA对Excel中的填充行进行迭代

所以我正在尝试使用VBA在Excel电子表格中迭代工作表。 我想遍历每一行,然后通过每一列,尽pipe谷歌search,我实际上找不到一个直观的方式来做到这一点。 我假设一行中的第一个单元格必须填充,如果它不是,那么一定是结束。 我可以强制这一点 我目前的做法是遍历行,然后尝试获取第一个单元格的值,但我无法弄清楚。 我在这里和其他地方使用范围等问题,但没有什么能帮助我编写代码。 目前的做法是: Set sh = ActiveSheet RowCount = 0 For Each rw In sh.Rows 'If Row.Cells(1, 1).Value = "" Then Exit For RowCount = RowCount + 1 Next rw MsgBox (RowCount) 现在当我运行这个时,我得到了一个很大的数字,这是错误的,因为表只有大约25行。 我说第一行,因为它不工作。 我可以在For循环的第一行中更改什么,以便在find第一个单元格为空的行时正确地中断?