0

レポートの最初の 10 ページ (つまり、1 ~ 10 ページ) のページ番号 (ページ フッター) を含めないようにしたいと考えています。ページ 1 は i、ページ 2 は ii、ページ 3 は iii などと読む必要があります (ローマ数字で)。11 ページに到達すると、ページ番号がリセットされます。

これを達成するために使用できる表現を知っている人はいますか。したがって、GlobalPage 番号 = 1,2,3,4,5,6,7,8,9,10 が表示されない場合、またはグローバル ページ番号を他の何かで補正する場合...これは可能ですか。

4

2 に答える 2

3

値を手動で変更する必要があります。つまり、フッターに次のようなものを配置します。

IIf(Globals!PageNumber=1, "i", ...

または、ユーザー関数を使用して、数字からローマ数字に VBA を試すこともできます

于 2012-12-16T10:39:54.650 に答える
0

柔軟性を保つために、いくつかのカスタム コードを使用してこれを行います。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 

レポートをより柔軟にするために、いつアラビア数字に戻すかを指定するパラメーターを追加します (レポートが長くなる段階で 10 個以上のローマ数字が必要になる場合に備えて)。それを呼び出してみましょう。@StartArabicデフォルト値が の整数になります10。したがって、ページ番号の式は次のようになります。

="Page " & Code.PageNumber(Globals!PageNumber, Parameters!StartArabic.Value)
于 2012-12-17T23:44:13.787 に答える