Я прочитал много сообщений об ошибках переполнения VBA, и у меня все еще возникают проблемы. Нужна помощь. Последняя строка в следующем фрагменте кода генерирует ошибку переполнения. Я пробовал много типов приведения типов, но ничего не работает.
Что меня подозрительно, так это то, что это работало нормально долгое время. И вдруг он начал давать сбой. Вероятно, из-за изменения в другом месте. Я изо всех сил пытаюсь понять, есть ли у меня просто ошибка кодирования или я каким-то образом повреждаю память своей программой. Возможно ли, что я неправильно использую типы пользователей? Я использую VBA в течение долгого времени, но прошло некоторое время с тех пор, как я использовал типы пользователей.
Наконец, я могу поставить точку останова перед ошибочной строкой кода и выполнить этот точный код с помощью debug.print в ближайшем окне. Работает нормально. Не удается войти в код.
Хотелось бы вам помочь. Спасибо.
кстати, я запускаю MSOffice на Ma c.
Sub create_3d_data()
Dim iPt As Integer ' point counter
Dim iPoly As Integer ' poly counter
Dim iKeystone As Integer 'keystone counter
Dim theta As Single 'segment angle as we sweep the ring circle
Dim segment_angle As Single, temp As Single
iPt = 0: iPoly = 0: iKeystone = 0
For iRing = 0 To user_ring_count - 1
temp = CSng(User_Rings(iRing).number_of_segments)
segment_angle = 3.14159 * 2# / temp <----- Overflow Error
Вот еще несколько фрагментов кода определения:
'in a separate Module in this VBAProject
Type User_Ring
bottom_elevation As Single
thickness As Single
inside_radius As Single
outside_radius As Single
number_of_segments As Integer
offset As Single
edge_length As Single
pattern As String
spacer_size As Single
spacer_color As Long
End Type
и
'in the Declarations section of the same workbook as the troubling code above
Dim User_Segments(10) As User_Segment
Dim User_Rings(30) As User_Ring
Dim user_ring_count as Integer