我希望不包括报告前10页的页码(在页脚中)(即第1-10页)。第1页应阅读i,第2页应阅读ii,第3页应阅读iii等等(罗马数字)....当它到达第11页时,这应重置页码
有谁知道我可以用来实现这个目的的表达式。因此,如果GlobalPage number = 1,2,3,4,5,6,7,8,9,10不显示,或者补偿全局页码以获取其他内容.....这是否可行。
答案 0 :(得分:3)
您必须手动更改值,即在页脚中添加类似以下内容的内容:
IIf(Globals!PageNumber=1, "i", ...
另外,您可以使用用户函数try VBA for number to roman numeral
答案 1 :(得分:0)
我们会使用一些自定义代码来保持灵活性。 Microsoft have some code to do the Roman numeral conversion所以我们会适应这一点。
让我们添加我们需要的自定义代码:一个函数将整数转换为罗马数字,一个函数计算出要提供的数字类型。
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
为了使报告更加灵活,我们将添加一个参数,以便何时恢复为阿拉伯数字(如果报告变长,我们在某个阶段需要超过10个罗马数字)。我们称之为@StartArabic
,它将是一个默认值为10
的整数。所以现在我们的页码表达式就是:
="Page " & Code.PageNumber(Globals!PageNumber, Parameters!StartArabic.Value)