Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
宏仅适用于英文excel版本_Excel_Vba - Fatal编程技术网

宏仅适用于英文excel版本

宏仅适用于英文excel版本,excel,vba,Excel,Vba,对于我的一个vba代码,我有一个快速的问题,该代码基本上是将12个表合并到一个名为temp range B8的表中。问题是,如果我使用Excel 2016英文版运行它,它在任何计算机上都可以正常工作,但如果Excel是2016西班牙文版,它将失败并出现错误:“执行错误1004” 我已经创建了12个带有宏的模块,其中只有一个模块在以下代码中无法使用西班牙语版本 Range("B8").Consolidate Sources:=Array( _ "En

对于我的一个vba代码,我有一个快速的问题,该代码基本上是将12个表合并到一个名为temp range B8的表中。问题是,如果我使用Excel 2016英文版运行它,它在任何计算机上都可以正常工作,但如果Excel是2016西班牙文版,它将失败并出现错误:“执行错误1004”

我已经创建了12个带有宏的模块,其中只有一个模块在以下代码中无法使用西班牙语版本

Range("B8").Consolidate Sources:=Array( _
        "Enero[#All]", "Febrero[#All]", "Marzo[#All]", "Abril[#All]", "Mayo[#All]", "Junio[#All]", "Julio[#All]", "Agosto[#All]", "Septiembre[#All]", "Octubre[#All]", "Noviembre[#All]", "Diciembre[#All]" _
        ), Function:=xlCount, TopRow:=True, LeftColumn:=False, CreateLinks:=True

将引用类型从#All更改为#Todo是修复方法,我现在很好

我很高兴您找到了解决问题的意大利版Excel解决方案

也许,您可以对代码进行一些更改,以便它可以处理这两种情况(英语和意大利语)。例如,您可以使用以下函数返回MsoLanguageID For Excel(灵感来源于):

然后,您可以使用if语句处理这两种情况,如下所示:

If ExcelLanguage = msoLanguageIDItalian Then
    
    Range("B8").Consolidate Sources:=Array( _
        "Enero[#Todo]", "Febrero[#Todo]", "Marzo[#Todo]", "Abril[#Todo]", "Mayo[#Todo]", "Junio[#Todo]", "Julio[#Todo]", "Agosto[#Todo]", "Septiembre[#Todo]", "Octubre[#Todo]", "Noviembre[#Todo]", "Diciembre[#Todo]" _
        ), Function:=xlCount, TopRow:=True, LeftColumn:=False, CreateLinks:=True

Else

    Range("B8").Consolidate Sources:=Array( _
            "Enero[#All]", "Febrero[#All]", "Marzo[#All]", "Abril[#All]", "Mayo[#All]", "Junio[#All]", "Julio[#All]", "Agosto[#All]", "Septiembre[#All]", "Octubre[#All]", "Noviembre[#All]", "Diciembre[#All]" _
            ), Function:=xlCount, TopRow:=True, LeftColumn:=False, CreateLinks:=True

End If

关于所有MsoLanguageID值,请参见。

我想我需要用Todo来更改单词all,我现在要尝试一下,并更新问题,如果这能解决问题CimalTurn,超级棒的答案,我将把这篇文章保存在我最喜欢的页面中,这对我来说是新的知识。我试图了解excel是否有办法在识别语言不同时自动进行更改,而不是编写两次整个合并。我建议根据语言设置一个变量,并将合并连接起来,如下所示:
“Enero”&stringvariblecontaininglanguageSpecificWordInBrackets,
等等on@Nacorid–是的,我想过这样做,但如果只有两种语言,我认为收益并不重要。如果有两种以上的语言,我肯定会这样做。根据公司规模和所有情况,总是有可能添加更多的语言:)不过你是对的,如果确定它只使用两种语言,那么就没有理由用字符串连接来混乱方法
If ExcelLanguage = msoLanguageIDItalian Then
    
    Range("B8").Consolidate Sources:=Array( _
        "Enero[#Todo]", "Febrero[#Todo]", "Marzo[#Todo]", "Abril[#Todo]", "Mayo[#Todo]", "Junio[#Todo]", "Julio[#Todo]", "Agosto[#Todo]", "Septiembre[#Todo]", "Octubre[#Todo]", "Noviembre[#Todo]", "Diciembre[#Todo]" _
        ), Function:=xlCount, TopRow:=True, LeftColumn:=False, CreateLinks:=True

Else

    Range("B8").Consolidate Sources:=Array( _
            "Enero[#All]", "Febrero[#All]", "Marzo[#All]", "Abril[#All]", "Mayo[#All]", "Junio[#All]", "Julio[#All]", "Agosto[#All]", "Septiembre[#All]", "Octubre[#All]", "Noviembre[#All]", "Diciembre[#All]" _
            ), Function:=xlCount, TopRow:=True, LeftColumn:=False, CreateLinks:=True

End If