Почему приведение типов не решает эту ошибку переполнения VBA - PullRequest
1 голос
/ 13 июля 2020

Я прочитал много сообщений об ошибках переполнения 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...