Tag: excel vba mac

Excel VBA – 如何创build和转储数组复杂结构的散列?

我来自Perl的背景和学习Excel-VBA。 在Perl中,我们可以使用Data :: Dumper来获取数据结构的转储。 这里是来自Perl的例子: use strict; use Data::Dumper; my $hash={}; $hash->{key1} = [ 1, "b", "c" ]; # the value stored against key1 here is an array $hash->{key2} = [ 4.56, "g", "2008-12-16 19:10 -08:00" ]; # the value stored against key2 here is an array my $hash2={1=>['one','ONE']}; # this is a hash $hash->{key3}=$hash2; […]

使用“范围”公式时丢失的值将丢失

我有以下的VBAfunction。 这是在给定单元格中创build下拉菜单 Public Sub CORE_SetValidation(ByRef Rng As Range, ByVal Value As String) With Rng.Validation Call .Delete If Value <> "" Then Call .Add(Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Value) .ErrorMessage = "Please select a value from drop-down list" .ErrorTitle = "Value Error" .IgnoreBlank = True .InCellDropdown = True .InputMessage = "" .InputTitle = "" .ShowInput = True .ShowError = […]

Excel包含超过2个值的filter

有谁知道我可以如何快速隐藏/删除sheet1中包含sheet2中的任何行信息的所有行? 这将需要包含filter,因为它不会完全匹配。 例如 工作表Sheet1: http://www.google.com/something/else http://www.yahoo.com/whatever www.microsoft.com/hahha Sheet2中: google.com 所以最终结果将是Sheet1的第一行将被隐藏 实际上,我正在处理sheet1中的成千上万行,并在Sheet2中进行处理。 为了澄清,我基本上试图做一个包含超过2个值的filter – 默认filter只允许2个值。 另外我正在使用Excel for Mac 2011。

如何编辑Excel 2011 VBAbutton而不是单击它们

当我在Excel 2007中单击VBAbutton时,我将进入编辑模式。 但是,当我试图修改他们在Excel中 – 我点击它,并点击! 但如何切换命令模式和编辑模式?

VBA cDate不适用于Mac excel 2011(14.7.1)

我正在尝试使用VBA脚本将date转换为长。 以下是代码片段 Sub test() Dim str as string Dim d as variant str="1/1/2016" d=cdate(str) end sub 上面的代码片段在Windows上运行良好,但给我MACtypes不匹配错误。 是否有任何转换在date转换有效的string。

有没有办法让ADODB与Excel for Mac 2011一起使用?

我似乎无法让我的Excel工作簿(使用ADODB)与Excel Mac 2011工作。我使用ADODB代码。 有没有加载项可用? 即使从第三方? 有没有人得到这个工作?

Excel for Mac 2011:UBound()不起作用

我正在为Excel 2011 for Mac 2011制作现有的启用macros的电子表格function。 我有一个函数( 源 )search数组指定的值: Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function 它适用于Excel 2013,但在Excel 2011 for Mac 2011中,我收到错误消息: Runtime error '9': Subscript out of range 我把它弄坏了,发现UBound调用是导致错误的原因。 我想尽可能less地改变可维护性。 我怎样才能解决这个错误的Mac版本? 在此先感谢您的答复! 编辑: @Siddharth Rout的解决scheme是现货,但由于我在一个循环内search数组,我不得不修改循环重置每次迭代之间的数组如下(以防其他人遇到相同的问题!): ' — START Reset Array for OS X — Dim […]

复制粘贴不会触发worksheet_change

这是我需要做的:当我写了一些东西到Worksheet_Change中的一个单元格时,我的Worksheet_Change代码应该检查单元格是否包含某些字符,然后replace这些字符。 这部分代码工作正常。 但是有一个有点奇怪的行为。 以下是目前的代码: Private Sub Worksheet_Change(ByVal Target As Range) Target.Value = Replace(Target.Value, "ß", "ß") MsgBox "This is the value: " & Target.Value End Sub 发生什么事情是,当我有剪贴板中需要更改的字符(使用Ctrl + C )。 当我双击单元格时,使用Ctrl + V将字符粘贴到单元格中,然后按Enter,代码工作正常,字符被更改。 (注意:如果没有双击,就看不到光标。) 但是,如果我只是用箭头键移动到单元格上,然后粘贴到单元格中的任何内容上,则什么都不会发生。 我怀疑Worksheet_Change甚至没有触发,否则它至less会显示我的MsgBox 。 (我不知道这是否与此有关,但我在Mac上使用Excel 2010)

在VBA Userform中closures打开的工作簿时出错

在一个子程序中,我想打开一个工作簿,从中读取并closures它。 出于某种原因,我得到一个错误: Run-time error '1004': Method 'Close' of object _Workbook failed 我已经确定了一个最小的代码片段来重现这个问题。 创build一个新的Excel文件。 在其中创build一个用户窗体。 在此,使用以下Click事件代码创build一个命令button: Private Sub CommandButton1_Click() Dim filename As String Dim opened_workbook As Workbook filename = Application.GetOpenFilename() ' User selects valid Excel file Set opened_workbook = Application.Workbooks.Open(filename) ' File operations would occur here opened_workbook.Close ' Exception thrown here MsgBox "If you got here, […]

刷新QueryTable引发“一般ODBC错误” – VBA Excel 2011 for Mac

编辑:发现新的错误? 我可能刚刚发现为什么我的脚本不能工作了。 最近有一个办公室更新,似乎他们已经实施了微软查询,摆脱了我安装和configuration我的需要的ODBC-Manager。 现在实际的问题可能是这个微软查询没有UNICODE库,我不知道我可以把它们放在哪里,以便微软的查询会读取/获取它们。 或者说,我不知道如何给微软查询的UNICODE库的path,因为在经理有没有可能改变它,也许有,我只是没有find它? 除此之外,我不能打开微软查询pipe理器,除非我直接从Excel工作簿中打开它。 原文问题 这段代码工作了一段时间。 现在使用完全相同的代码,我得到一个运行时错误。 在这里,我已经要求在这种情况下的帮助,并得到它的工作。 代码如下: Sub ConnectSQL() Dim connstring As String Dim sLogin As String Dim qt As QueryTable sLogin = "Uid=*;Pwd=*;" sqlstringFirma = "select * from gi_kunden.tbl_Firma" sqlstringPerson = "select * from gi_kunden.tbl_Person" connstring = "ODBC;DSN=KundeDB;" & sLogin ActiveWorkbook.Sheets("Firma").Select ActiveSheet.Range("A1:T2000").Clear For Each qt In ActiveSheet.QueryTables qt.Delete Next qt […]