私はLibreOfficeのバージョンを使用しています:4.4.3.2ビルドIDを:40m0を(ビルド:2)ロケール:en_AULibreOfficeの基本を無視し、「いくつかの」...エンド型定義
を私は基本モジュールを持っている
いずれかのサブまたは関数の前に、このモジュールの上部には私が
Type InitHeadings
MySort_By As Integer
MyCharacter As Integer
MyInitiative As Integer
MyRolled As Integer
MyTotal As Integer
End Type
...
Global InitiativeColumn As New InitHeadings
を持っている。しかし、私はサブを実行すると、ブレークポイントと「時計」は最初の2つのフィールドが表示されInitiativeColumnオブジェクトを設定します。
この構造体ドキュメントは、それらを呼び出すように関連する私のコードの残りの部分は以下の通りです。私は他のどこにでも参照しません。最初の2人はなぜ働くのでしょうか?私は他の2つの構造体をこのコードに持っており、両方とも最後の3つのフィールドを無視します。これはバグですか?
Sub Main
'Initialise Doc and Sheet Objects
Dim Doc As Object
Doc = ThisComponent
StatsSheet = Doc.Sheets.getByName("Stats")
InitiativeSheet = Doc.Sheets.getByName("Initiative")
CombatSheet = Doc.Sheets.getByName("Combat")
'LOAD HEADING NAMES
'Initiative Sheet
For Column = 0 to 25 'Columns A to Z
MyHeadingName = InitiativeSheet.getCellByPosition(Column,0).String
Select Case MyHeadingName
Case "Sort By"
InitiativeColumn.MySort_By = Column
Case "Character"
InitiativeColumn.MyCharacter = Column
Case "Initiative"
InitiativeColumn.MyInitiative = Column
Case "Rolled"
InitiativeColumn.MyRolled = Column
Case "Total"
InitiativeColumn.MyTotal = Column
End Select
Next Column
End Sub
Sub MyInitiativeButton
'Iterate over a range of cells:
For Row = 1 To 25 'Rows 2 to 26
'Column 3 is column D the "Rolled" column
InitiativeSheet.getCellByPosition(InitiativeColumn.MyRolled,Row).VALUE = Roledice(1,20,0)
Next Row
End Sub
なぜ私は考えているのでしょうか?問題はまだありますが、私は回避策を見つけました:もし3つのフィールド「Sacrifice1 As Integer」、「Sacrifice2 As Integer」、「Sacrifice3 As Integer」最後の3つの問題を削除します。しかし、「InitiativeColumn」は、「Global InitiativeColumn As New InitHeadings」宣言にもかかわらず、まだグローバルではなかった。グローバル変数GlobalInitiativeColumnを宣言し、InitiativeColumnをInitInativeColumnに代入すれば、GlobalInitiativeColumn = InitiativeColumnとなりGlobalInitiativeColumnがWAS Globalになり、働いていました。 –