簡體   English   中英

在外語版本的 Excel 中從 vba 調用工作表函數

[英]Calling Worksheet functions from vba in foreign language versions of Excel

以下代碼 snipet 在英語版本的 Excel 中運行正常,但是當嘗試在葡萄牙語版本的 Excel 中的同一工作簿中運行此代碼時,它會出錯。

   ' Add color bars on every other row - attempt to make list
   ' easier to read.
   ' "PlaceAt" is a worksheet range passed into the function
    With Range(PlaceAt.offset(1, 0), PlaceAt.offset(i + 1, 7))
        .FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(ROW(),2)=1"
        .FormatConditions(1).Interior.ColorIndex = 20
    End With

我認為問題在於,在葡萄牙語中,ROW 函數拼寫為 LIN(不確定 MOD 函數是什么)並且由於該函數是使用 vba 插入的,因此 Excel 的翻譯函數沒有機會將函數名稱翻譯為打開文檔時通常會這樣做。

有任何想法嗎?

FormatConditions公式必須使用本地格式

我的解決方法是將想要的公式寫入一個單元格,然后獲取該單元格的FormulaLocal ,它應該是您語言中的准確翻譯:

Dim tmpCell As Range
Set tmpCell = Range("IV1")
tmpCell.Formula = "=mod(row(),2)=0"

.FormatConditions.Add(xlExpression, Formula1:=tmpCell.FormulaLocal)

不知道是否有更清潔的解決方案,但如果有,我想知道,所以請分享...

我在另一個問題中找到了一個更清潔的解決方案

Names.Add "translate", RefersTo:="=MOD(ROW(),2)=1"                                 ' Generic separator (,) and function name (ROW).
.FormatConditions.Add Type:=xlExpression, Formula1:=Names("translate").RefersToLocal ' Local separator (;) and function name (LIN).
Names("translate").Delete

Excel 2019 - 365 版本仍然存在此問題。 我發現在將 VBA 與 MS Excel 命名范圍管理器結合使用時會發生這種情況。

我面臨的錯誤示例,我修復了修改 Pragmateek 2013 年的答案。

在命名范圍管理器中存在一個使用 OFFSET 函數的命名范圍。 當調用此命名范圍並在 VBA 中使用它來設置另一個范圍變量時,使用 Application.Intersect 方法會導致對象錯誤,因為在 VBA 中,MS Excel 命名范圍是作為字符串獲取的。 然后 intersect 方法嘗試確定此字符串與另一個范圍的交集。 這當然會失敗,因為 OF​​FSET 在英語 MS Excel 版本中工作,但不是在葡萄牙語/西班牙語....我想象其他語言。

解決這個問題涉及:

' Names!XXXXX = "=OFFSET('DummySheet'!$AO$7,0,0,1,'DummySheet'!$AM$2)""

Sub evaluate()
...
xAxis = Names!XXXXXX

Dim tempvar As Range: Set tempvar = Range("C1")
tempvar.Formula = xAxis                 ' set the range to hold the formula
tempvar.Formula = tempvar.FormulaLocal  ' set the range to hold the formula in the local language
Set rng = Application.Intersect(tempvar.EntireColumn, yAxis.RefersToRange.EntireRow)

這工作得很好。 但是,如果有人有更清潔的解決方案,請發布建議。 干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM