首页 > 解决方案 > 有没有办法使用 VBA 更改 VBA 生成的工作表中的语言?

问题描述

我在工作中被分配了一个项目来开发一个宏,它会自动从 Excel 表中获取财务数据并为客户生成信用票据和发票。我已经开发了宏,它正在以应有的方式工作,但我遇到的问题是每张发票使用的语言。

生成贷项通知单时,宏从财务数据表中获取发票开具月份,然后将它们显示为向客户开具信贷的月份。即,客户要求在一段时间内(例如 2019 年 2 月至 2019 年 4 月)对交易进行部分退款,它将显示为:

February 2019 (02-19)     -20.20
March 2019 (03-19)        -32.03
April 2019 (04-19)        -24.21

问题是我的主要工作语言是英语,但我的公司在几个欧洲市场工作,发票和信用票据必须以客户所在市场的语言显示。

因此,如果意大利客户要求开具发票,则显示的月份必须列为

Febbraio 2019 (02-19)     -20.20
Marzo 2019 (03-19)        -32.03
Aprile 2019 (04-19)       -24.21

然而,当运行宏时,它仍然以英文显示发行月份,而它应该以市场语言显示。使用此宏创建的所有发票和贷方票据的全部都以正确的语言生成,但由于宏从数据表中获取发行月份,它会自动以英语显示它们。

有什么方法可以确保它以所需的语言显示发行月份?

我已经知道可以更改整个工作簿的语言设置,但我仍然遇到同样的问题,因为每次运行宏时我都必须手动更改发行语言以确保发行月份正确?

标签: excelvba

解决方案


要在另一个区域设置中格式化日期,您需要更改所需单元格范围的日期数字格式。例如。按Ctrl+格式化单元格1以获取以下对话框,然后为您想要的国家/地区选择区域设置(“Gebietsschema”)。

在此处输入图像描述 图 1:更改日期的区域设置(对不起,德语截图)。

或者,使用Range.NumberFormat 属性使用 VBA 格式化单元格:

.NumberFormat = "[$-it-IT]d mmmm yyyy;@"

请注意,如果您的日期是真实的日期值,这两种方法都有效,但如果您的日期是文本,则这些方法都无效。如果它们是文本,则需要将它们更改为真实日期。


推荐阅读