我希望不包括报告前 10 页(即第 1-10 页)的页码(在页脚中)。第 1 页应为 i,第 2 页应为 ii,第 3 页应为 iii,依此类推(用罗马数字表示)......当它到达第 11 页时,这应该重置页码
有谁知道我可以用来实现这一目标的表达方式。因此,如果 GlobalPage number = 1,2,3,4,5,6,7,8,9,10 不显示或补偿全局页码其他内容.....这可能吗?
我希望不包括报告前 10 页(即第 1-10 页)的页码(在页脚中)。第 1 页应为 i,第 2 页应为 ii,第 3 页应为 iii,依此类推(用罗马数字表示)......当它到达第 11 页时,这应该重置页码
有谁知道我可以用来实现这一目标的表达方式。因此,如果 GlobalPage number = 1,2,3,4,5,6,7,8,9,10 不显示或补偿全局页码其他内容.....这可能吗?
我们将使用一些自定义代码来保持灵活性。Microsoft 有一些代码可以进行罗马数字转换,因此我们将对其进行调整。
让我们添加我们需要的自定义代码:一个将整数转换为罗马数字的函数和一个计算要提供哪种数字的函数。
Function PageNumber(page As Integer, startArabic As Integer) As String
If page <= startArabic Then
PageNumber = IntegerToRoman(page)
Else
PageNumber = (page - startArabic).ToString()
End If
End Function
Function IntegerToRoman (ByVal N As Integer) As String
Const Digits = "ivxlcdm"
Dim I As Integer
Dim Digit As Integer
Dim Temp As String
I = 1
Temp = ""
Do While N > 0
Digit = N Mod 10
N = N \ 10
Select Case Digit
Case 1
Temp = Mid(Digits, I, 1) & Temp
Case 2
Temp = Mid(Digits, I, 1) & Mid(Digits, I, 1) & Temp
Case 3
Temp = Mid(Digits, I, 1) & Mid(Digits, I, 1) & Mid(Digits, I, 1) & Temp
Case 4
Temp = Mid(Digits, I, 2) & Temp
Case 5
Temp = Mid(Digits, I + 1, 1) & Temp
Case 6
Temp = Mid(Digits, I + 1, 1) & Mid(Digits, I, 1) & Temp
Case 7
Temp = Mid(Digits, I + 1, 1) & Mid(Digits, I, 1) & Mid(Digits, I, 1) & Temp
Case 8
Temp = Mid(Digits, I + 1, 1) & Mid(Digits, I, 1) & Mid(Digits, I, 1) & Mid(Digits, I, 1) & Temp
Case 9
Temp = Mid(Digits, I, 1) & Mid(Digits, I + 2, 1) & Temp
End Select
I = I + 2
Loop
IntegerToRoman = Temp
End Function
为了使报表更灵活,我们将添加一个参数,用于何时恢复为阿拉伯数字(以防报表变长时在某个阶段需要十多个罗马数字)。让我们称之为它@StartArabic
,它将是一个具有默认值的整数10
。所以现在我们的页码表达式很简单:
="Page " & Code.PageNumber(Globals!PageNumber, Parameters!StartArabic.Value)