使用 VBA 将标记从数字转换为阿拉伯语评分的问题
Problem convert the marks from number to rating in Arabic using VBA
我试图将分数从数字转换为评级(即 (90 - 100 ) 更改为 (Excellent) , (80 - 89 ) 更改为 (very good)) 等等 ..代码工作正常,没有任何问题,但是当我尝试用阿拉伯语编写评级时,评级出现在 Excel sheet unknown 中,如下所示
我已经将本地系统语言更改为阿拉伯语,但还是一样..
我的代码如下
Private Sub Convert_Click()
Dim n As Integer
n = Application.WorksheetFunction.CountA(Range("a:a"))
For i = 2 To n
If Worksheets("Sheet1").Range("c" & i).Value >= 90 Then
Worksheets("Sheet2").Range("c" & i).Value = "امتياز"
Else
Worksheets("Sheet2").Range("c" & i).Value = " جيد جدا "
End If
Next i
End Sub
财政年度,
امتياز >> meaning in english "Excellent"
جيد جدا >> meaning in english "very good"
亲切的问候
您应该避免直接在 vba 编辑器中输入 non-ascii 个字符。即使由于您的区域设置,它(有时)对您有用,但它对试图帮助您的人不起作用。
在这种情况下,我建议您在 excel 中输入常量名称,其值例如:
Name Value
Excellent "إمتياز"
VeryGood "جيد جدا"
Good "جيد"
... and so on
然后将您的 vba 代码更改为类似这样的内容
Private Sub Convert_Click()
Dim n As Integer
n = Application.WorksheetFunction.CountA(Range("a:a"))
For i = 2 To n
If Worksheets("Sheet1").Range("c" & i).Value >= 90 Then
Worksheets("Sheet2").Range("c" & i).Value = [Excellent]
ElseIf Worksheets("Sheet1").Range("c" & i).Value >= 80
Worksheets("Sheet2").Range("c" & i).Value = [VeryGood]
ElseIf Worksheets("Sheet1").Range("c" & i).Value >= 70
Worksheets("Sheet2").Range("c" & i).Value = [Good]
End If
Next i
End Sub
编辑(根据 OP 的回答)
另一种(类似的)方法是有一个专用的 sheet,您可以在其中定义整个应用程序使用的全局变量。在这种情况下,上面的代码仍然可以不做任何更改,并且 [Excellent]
比 Sheets(Sheet4.Name).Range("A1").Value
更具可读性。您也可以使用 "Sheets("Globals").Range("Excellent")
旁白: 相反 Sheets(Sheet4.Name).Range("A1").Value
你可以简单地使用 Sheet4.Range("A1").Value
感谢@Super Symmetry 的支持..我使用了另一种解决方法..我创建了另一个 sheet 并在其中插入了 Arabic 评级,然后在 VBA 中我调用了这些值。 . 如下例
Private Sub Convert_Click()
Dim n As Integer
n = Application.WorksheetFunction.CountA(Range("a:a"))
For i = 2 To n
If Worksheets("Sheet1").Range("c" & i).Value >= 90 Then
Worksheets("Sheet2").Range("c" & i).Value = Sheets(Sheet4.Name).Range("A1").Value
Else
Worksheets("Sheet2").Range("c" & i).Value = Sheets(Sheet4.Name).Range("A6").Value
End If
Next i
End Sub
我试图将分数从数字转换为评级(即 (90 - 100 ) 更改为 (Excellent) , (80 - 89 ) 更改为 (very good)) 等等 ..代码工作正常,没有任何问题,但是当我尝试用阿拉伯语编写评级时,评级出现在 Excel sheet unknown 中,如下所示
我已经将本地系统语言更改为阿拉伯语,但还是一样..
我的代码如下
Private Sub Convert_Click()
Dim n As Integer
n = Application.WorksheetFunction.CountA(Range("a:a"))
For i = 2 To n
If Worksheets("Sheet1").Range("c" & i).Value >= 90 Then
Worksheets("Sheet2").Range("c" & i).Value = "امتياز"
Else
Worksheets("Sheet2").Range("c" & i).Value = " جيد جدا "
End If
Next i
End Sub
财政年度,
امتياز >> meaning in english "Excellent"
جيد جدا >> meaning in english "very good"
亲切的问候
您应该避免直接在 vba 编辑器中输入 non-ascii 个字符。即使由于您的区域设置,它(有时)对您有用,但它对试图帮助您的人不起作用。
在这种情况下,我建议您在 excel 中输入常量名称,其值例如:
Name Value
Excellent "إمتياز"
VeryGood "جيد جدا"
Good "جيد"
... and so on
Private Sub Convert_Click()
Dim n As Integer
n = Application.WorksheetFunction.CountA(Range("a:a"))
For i = 2 To n
If Worksheets("Sheet1").Range("c" & i).Value >= 90 Then
Worksheets("Sheet2").Range("c" & i).Value = [Excellent]
ElseIf Worksheets("Sheet1").Range("c" & i).Value >= 80
Worksheets("Sheet2").Range("c" & i).Value = [VeryGood]
ElseIf Worksheets("Sheet1").Range("c" & i).Value >= 70
Worksheets("Sheet2").Range("c" & i).Value = [Good]
End If
Next i
End Sub
编辑(根据 OP 的回答)
另一种(类似的)方法是有一个专用的 sheet,您可以在其中定义整个应用程序使用的全局变量。在这种情况下,上面的代码仍然可以不做任何更改,并且 [Excellent]
比 Sheets(Sheet4.Name).Range("A1").Value
更具可读性。您也可以使用 "Sheets("Globals").Range("Excellent")
旁白: 相反 Sheets(Sheet4.Name).Range("A1").Value
你可以简单地使用 Sheet4.Range("A1").Value
感谢@Super Symmetry 的支持..我使用了另一种解决方法..我创建了另一个 sheet 并在其中插入了 Arabic 评级,然后在 VBA 中我调用了这些值。 . 如下例
Private Sub Convert_Click()
Dim n As Integer
n = Application.WorksheetFunction.CountA(Range("a:a"))
For i = 2 To n
If Worksheets("Sheet1").Range("c" & i).Value >= 90 Then
Worksheets("Sheet2").Range("c" & i).Value = Sheets(Sheet4.Name).Range("A1").Value
Else
Worksheets("Sheet2").Range("c" & i).Value = Sheets(Sheet4.Name).Range("A6").Value
End If
Next i
End Sub