Tag: excel vba mac

忽略“下标超出范围”的错误一次,以处理第一次迭代

我正在制作一个循环,用来计算弹丸的弹道,当弹丸与目标高度相同时弹丸就要停下来,并且弹丸处于正常状态。 这是由直到…线保证。 但是,当循环开始时,y(i-2)不存在[y(-1)],导致“运行时错误”9' – 下标超出范围“。 使用“On Error Resume Next”确实可以让循环继续,但是我经常会犯错误,并且当向循环中添加更多的东西(例如移动目标,偏航,风等)时肯定会出错。 由于这个原因,我想vba忽略运行时错误只有一次,并打破任何以下错误。 相关的代码部分如下: vx(0) = V * Cos(Theta) 'set the initial conditions vy(0) = V * Sin(Theta) vz(0) = 0 x(0) = 0 y(0) = 0 z(0) = 0 i = 1 t = 0 On Error Resume Next Do Until y(i – 1) < TargetAlt And […]

在Excel Visual Basic中比较两张纸

我想要创build一个macros来比较两个版本的报表,以便在创build新报表时检查历史数据是否被更改。 我想循环遍历一张纸的使用范围,然后将该范围内的每个单元格与另一张纸上的相同地址进行比较。 这是迄今为止的代码: Sub Compare_Report() Dim vRange As Range Dim v_Rangeversie As Range On Error GoTo ErrorCatch Debug.Print Now Set v_Rangeversie = Worksheets("VorigeVersie").UsedRange For Each v_range In Worksheets("1. Overzicht").UsedRange For Each vCell In v_range Debug.Print vCell.Address 'If vCell.Value != v_Rangeversie.Range.Cell(vCell.address) 'Then ' Debug.Print "Ongelijk" ' Cells are different. ' varSheetB.Cell.Interior.ColorIndex = 3 ' varSheetB.Cell.Font.Color = […]

从网站下载文件

我在Mac上使用Excel 2011,这意味着我不能(或至less我不知道如何)导航到网页,并将数据从下载链接保存到Excel工作簿。 在这个网站上, https://finance.yahoo.com/quote/SPY/history?period1=1342681200&period2=1500447600&interval=1d&filter=history&frequency=1d Sub Test() Dim ws As Worksheet Dim qr As QueryTable Dim URL As String Set ws = Worksheets("Sheet1") Sheets("Sheet1").Cells.Clear URL = "https://finance.yahoo.com/quote/SPY/history?period1=1342681200&period2=1500447600&interval=1d&filter=history&frequency=1d" Set qr = ws.QueryTables.Add( _ Connection:="URL;" & URL, _ Destination:=Range("A1")) qr.RefreshStyle = xlOverwriteCells = True qr.BackgroundQuery = True qr.SaveData = True qr.Refresh BackgroundQuery = False End Sub 有一个“下载数据”button。 我试图把这些数据放入Excel,然后计算5年的标准偏差。 […]

Excel VBA :: Find循环中的函数

我试图通过几个工作表,包含一些源数据,必须被复制到一个主表,这里称为“PriorityList”。 首先,该子不工作,我认为这个错误是在“ find ”方法中的某个地方。 其次,这个子文件需要很长的时间才能运行,我想这可能是因为“查找”方法search整个表格而不是相关的范围? 非常感谢您的回答! 帕特里克 Sub PriorityCheck() 'Sub module to actualise the PriorityList Dim CurrWS As Long, StartWS As Long, EndWS As Long, ScheduleWS As Long StartWS = Sheets("H_HS").Index EndWS = Sheets("E_2").Index Dim SourceCell As Range, Destcell As Range For CurrWS = StartWS To EndWS For Each SourceCell In Worksheets(CurrWS).Range("G4:G73") On Error Resume […]

Mac Excel 2011 VBA UDF不工作 – SET或FIND命令似乎是问题

我正在将电子表格从Excel 2007转换到Mac Excel 2011.我已经尝试了几个小时来解决我的问题,没有成功,所以任何帮助将不胜感激! 这个UDF在一个范围内find一个string,然后在find的单元格下面返回一个单元格的值。 SET命令在Mac版本中不返回任何内容,但在Excel 2007中可用。 Function FindRng(Fnd As String) Application.Volatile Dim Rng As Range If Fnd = "" Then FindRng = 0 GoTo 109 End If With Sheets("Matrix").Range("G2:FZ13") Set Rng = .Find(What:=Fnd, _ After:=.Cells(2, 7), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False) If Not Rng Is Nothing Then FindRng = […]

循环Mac OS X上的文件夹中的文件 – VBA Excel 2011

我试图通过使用VBA Excel 2011在Mac OS X上的文件夹中的文件循环。我尝试了下面的代码,但它不起作用。 Sub ListAllFilesInDir() Dim strFile As String Dim strPath1 As String strPath1 = ActiveWorkbook.FullName MsgBox strPath1 strFile = Dir(strPath1) MsgBox strFile strFile = Dir() MsgBox strFile strFile = Dir() MsgBox strFile End Sub 当程序到达第一个MsgBox strFile时,我得到活动工作簿的名称。 我读了一些使用Dir而没有参数的地方导致文件夹中的下一个文件。 但是这对我不起作用。 我得到第二个MsgBox strFile命令和一个错误(运行时错误5:无效的过程调用或参数“为第三个MsgBox strFile命令一个空的消息框。我有我试图循环通过文件夹中的4个文件。 另外,我会怎么做只列出“.xslx”文件

以编程方式添加引用会导致运行时错误

我已经为Excel (Office 2011, Mac)编写了两个VBA加载项:第一个,“基本”加载项也为第二个加载项提供函数。 还会有其他的插件在将来使用基本插件的function…应该可以运行基本的插件,第二个插件是可选的。 在第二个插件中,我试图添加一个像这样的引用: Public Sub Workbook_Open() Application.VBE.VBProjects("SecondAddin").References.AddFromFile ("BasicAddin.xlam") UseFunctionFromBasicAddin End Sub Private Sub UseFunctionFromBasicAddin() FunctionFromBasicAddin End Sub 但是,这在启动Excel时给我一个运行时错误: Run-time error 91: Object variable or With block variable not set. 在此错误之后,当我打开VBA编辑器时,我可以看到BasicAddin.xlam现在在SecondAddin中被正确地引用了 – 当我在VBA编辑器中执行UseFunctionFromBasicAddin() ,它就起作用了。 启动Excel时,它不起作用。 在VBA编辑器(工具 – >引用)中添加引用时,将加载两个加载项,但是有一个MsgBox: "This workbook is currelty referenced by another workbook and cannot be closed." 但是,我想以编程方式添加引用,因为我怀疑当在具有不同path的另一台计算机上使用插件时链接会中断? 我很乐意提供关于如何摆脱运行时错误的build议(或者是否有更好的方法来pipe理不同的加载项?)…!

显示协调员

单元格A1有框左上angular的坐标, A2有框右下angular坐标,我如何得到A3以csv格式显示框的所有坐标? 例如: Cell A1 = (24,20) Cell A2 = (26,19) 如何得到这个? Cell A3 = (24,20),(25,20),(26,20),(24,19),(25,19),(26,19) 我正在使用Excel 2011

vbasearchreplace字符

我正在尝试在excel vba中为报表准备一个电子表格。 不幸的是,这里有一些奇怪的angular色需要replace。 很容易,除了这个字符: ¦ 我似乎无法将该字符粘贴到编辑器中的stringreplacefunction。 当我尝试时,输出是_ 。 然后我想通过它的Chr代码来引用它。 快速查找说这是Chr(166)。 http://www.gtwiki.org/mwiki/?title=VB_Chr_Values Replace(s, "â€" + Chr(166), "…") 但是这根本不是那个angular色(至less在Mac上是excel)。 我试过了: For i = 1 To 255 Debug.Print Chr(i) Next i 我没有看到这个angular色在任何地方。 有谁知道我可以在vba代码中引用这个字符来取代它吗?

PC和Mac之间的Range.Count差异

我正在从雅虎财经下载历史股票价格数据我需要一个数据点的数量下载。 数据本身被下载,使得行16是标题行,并且从行17开始的所有内容都是数据。 我希望工作表可以在Mac或PC上工作,这就是问题所在。 我用于数据点数的代码是: Dim Cntr As Long Cntr = Range(ActiveSheet.Range("A17"), ActiveSheet.Range("A17").End(xlDown)).Count 在Mac上,这给出了正确数量的数据点。 然而,在个人电脑上,我得到的答案是太多了,所以我不得不改变线看起来像这样: Cntr = Range(ActiveSheet.Range("A17"), ActiveSheet.Range("A17").End(xlDown)).Count Cntr = Cntr – 1 如果您使用的是Mac或PC,Range.Count的工作方式会有所不同吗? 我想我可以通过数据循环,并得到一个计数,但这似乎是浪费。 还有其他build议吗? 我正在使用Excel for Mac 2011(OS X Mavericks)和Excel 2010(64位Windows 7 – 均通过Boot Camp和Parallels 9)