Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Оптимизация проектных решений оснований и фундаментов с помощью Microsoft Excel и Visual Basic for Applications (примеры расчета). Методические указан
.pdf
данный оператор, то щелчок на командную кнопку OK ничего не даст и
форма останется на экране.
Таким образом, полный код процедуры обработки события
OKButton_Click принимает следующий окончательный вид:
Private Sub OKButton_Click()
If PryamPodosh Then
FormaPodosh = 1
ElseIf KvadrPodosh Then
FormaPodosh = 2
ElseIf LentPodosh Then
FormaPodosh = 3
Else
FormaPodosh = 4
End If
With ShirinaBox
If .Value = “” Or Not IsNumeric(.Value) Then
MsgBox “Введено не числовое значение ширины
подошвы”
.SetFocus
Exit Sub
End If
Shirina = Val(ShirinaBox)
End With
With DlinaBox
If .Value = “” Or Not IsNumeric(.Value) Then
MsgBox “Введено не числовое значение длины подошвы”
.SetFocus
Exit Sub
End If
Dlina = Val(DlinaBox)
End With
With DavlenieBox
If .Value = “” Or Not IsNumeric(.Value) Then
MsgBox “Введено не числовое значение давления на
основание”
.SetFocus
Exit Sub
End If
Davlenie = Val(DavlenBox)
End With
With GlubinaBox
If .Value = “” Or Not IsNumeric(.Value) Then
MsgBox “Введено не числовое значение глубины”
.SetFocus
Exit Sub
End If
Glubina = Val(GlubinaBox)
End With
31

Рис. 6. VBA-код пользовательской формы IshodDannieForm.
With ShagBox
If .Value = “” Or Not IsNumeric(.Value) Then
MsgBox “Введено не числовое значение шага”
.SetFocus
Exit Sub
End If
Shag = Val(ShagBox)
End With
Unload Me
End Sub
Для преждевременного завершения приложения используется
процедура CancelButton_Click, которая, как правило, выглядит
следующим образом
Private Sub CancelButton_Click()
Unload Me
End
End Sub
На рис. 6 представлена часть VBA-кода пользовательской формы
IshodDannieForm с тремя обработчиками событий: UserForm_Initialize,
OKButton_Click и CancelButton_Click.
32

Рис. 8. Вид
формы
InputsForm.
Рис. 7. Рабочий лист Описание.
7. Приложение определения распределения вертикальных
нормальных напряжений.
В приложении определения распределения вертикальных
нормальных напряжений по оси, проходящей через центр прямоугольной,
квадратной, ленточной и круглой подошвы фундамента ввод данных
производится с использованием пользовательских форм, а вывод
результатов вычислений представляется в виде таблицы и графика на
отдельном листе
Приложение состоит из пяти рабочих листов: Описание,
Прямоугольный, Квадратный, Ленточный и Круглый. На листе Описание
(рис. 7) расположена кнопка «Определить напряжения», при помощи
которой запускается приложение. Остальные рабочие листы
предназначены для вывода результатов расчета.
В приложение включены четыре пользовательских форм для выбора
типа подошвы фундамента и ввода исходных данных. После щелчка на
кнопке «Определить напряжения» программа вызывает форму InputsForm
(рис. 8).
33

Рис. 9. Форма
IshDannForm.
Форма содержит командные кнопки и четыре переключателя:
PryamPodosh, KvadrPodosh, LentPodosh и KruglPodosh, которые
соответствуют прямоугольной, квадратной, ленточной и круглой форме
подошвы фундамента. Процедура UserForm_Initialize устанавливает
первый переключатель по умолчанию. Пользователь в процессе
выпонения программы может выбрать любой переключатель. Процедура
OKButton_Click сохраняет сведения о выбранном переключателе в
глобальной переменной FormaPodosh, которая может принимать значения
от 1 до 4. Процедура CancelButton_Click выгружает пользовательскую
форму и завершает выполнение программы. VBA-код формы InputsForm с
тремя обработчиками событий выглядит следующим образом
Private Sub CancelButton_Click()
Unload Me
End
End Sub
Private Sub OKButton_Click()
If PryamPodosh Then
FormaPodosh = 1
ElseIf KvadrPodosh Then
FormaPodosh = 2
ElseIf LentPodosh Then
FormaPodosh = 3
ElseIf KruglPodosh Then
FormaPodosh = 4
End If
Unload Me
End Sub
Private Sub UserForm_Initialize()
PryamPodosh = True
End Sub
Пользовательская форма IshDannForm, показанная на рис. 9,
предназначена для ввода величины дополнительного уплотняющего
давления на основание, значения глубины и шага определения
напряжений.
34

Форма содержит командные кнопки и три текстовых поля:
DavlenBox, GlubinaBox и ShagBox. В текстовое поле GlubinaBox можно
вводить как любое значение глубины, так и кратное ширины или
диаметра подошвы, например, 4∙2.7=10.8. Значением величины шага
может быть любое число, но не более 0,4 ширины или диаметра подошвы
фундамента, например, 0,2∙2,7 = 0.54 м, 0,3∙2,7 = 0.81 м или 0,4∙2,7 = 1.08
м.
Если в текстовые поля форм приложений вводится значение с
десятичными знаками, то между целыми и десятичными знаками ставится
точка, а не запятая. В противном случае программа выполнить не верные
вычисления или выдаст сообщение об ошибке.
Процедура UserForm_Initialize форматирует и очищает текстовое
поле от ранее введенных значений. Процедура OKButton_Click сохраняет
значение дополнительного уплотняющего давления в переменных
Davlenie, Glubina и Shag с областью действия Public, а CancelButton_Click
– выгружает форму и завершает выполнение программы. Код формы
имеет следующий вид
Private Sub CancelButton_Click()
Unload Me
End
End Sub
Private Sub OKButton_Click()
Glubina = Val(GlubinaBox)
Davlenie = Val(DavlenBox)
Shag = Val(ShagBox)
Unload Me
End Sub
Private Sub UserForm_Initialize()
GlubinaBox = Format(Glubina, "0.00")
DavlenBox = Format(Davlen, "0.00")
ShagBox = Format(Shag, "0.00")
GlubinaBox = ""
DavlenBox = ""
ShagBox = ""
End Sub
Пользовательская форма RazmerFundForm1 (рис. 10) содержит
командные кнопки и два текстовых поля - ShirinaBox и DlinaBox,
предназначенные для ввода ширины и длины подошвы фундамента.
Данная форма вызывается главной процедурой Main в том случае, если в
форме InputsForm выбрана прямоугольная форма подошвы фундамента.
35

Рис. 11. Форма
RazmerFundForm2.
Рис. 10. Форма RazmerFundForm1.
Процедуры UserForm_Initialize и CancelButton_Click также
выполняют те же функции, что и в предыдущих формах. Процедура
OKButton_Click сохраняет значения ширины и длины подошвы
фундамента соответственно в переменных Shirina и Dlina с областью
действия Public. Код формы RazmerFundForm1 принимает следующий вид
Private Sub CancelButton_Click()
Unload Me
End
End Sub
Private Sub OKButton_Click()
Shirina = Val(ShirinaBox)
Dlina = Val(DlinaBox)
Unload Me
End Sub
Private Sub UserForm_Initialize()
ShirinaBox = Format(Shirina, "0.00")
DlinaBox = Format(Dlina, "0.00")
ShirinaBox = ""
DlinaBox = ""
End Sub
Пользовательская форма RazmerFundForm2 (рис. 11) содержит
командные кнопки и текстовое поле ShirinaBox для ввода ширины или
диаметра подошвы фундамента. Если в форме InputsForm выбрана
квадратная или ленточная форма подошвы фундамента, то в текстовое
поле вводится ширина подошвы, а если круглая – то диаметр подошвы.
Данная форма вызывается главной процедурой Main, если выполняются
расчеты для квадратной, ленточной или круглой подошвы фундамента.
36

Рис. 12. Шаблон листа Прямоугольный.
Процедуры UserForm_Initialize и CancelButton_Click также
выполняют те же функции, что и в предыдущих формах. Процедура
OKButton_Click сохраняет значения ширины или диаметра подошвы
фундамента в глобальной переменной Shirina. Код формы
RazmerFundForm2 в этом случае принимает следующий вид
Private Sub CancelButton_Click()
Unload Me
End
End Sub
Private Sub OKButton_Click()
Shirina = Val(ShirinaBox)
Unload Me
End Sub
Private Sub UserForm_Initialize()
ShirinaBox = Format(Shirina, "0.00")
ShirinaBox = ""
End Sub
При запуске приложения открывается только лист Описание, а
остальные рабочие листы скрыты и отображаются на экране по мере
возникновения в них необходимости.
Часть приложения разрабатывается в виде шаблонов с помощью
интерфейса Excel без использования VBA-кода.
Шаблон листа «Прямоугольный» представлен на рис. 12.
37

bz2
В ходе разработки шаблона выполняются следующие действия:
1. В ячейку С3 вводится текст названия выполняемых расчетов:
Результаты определения напряжений для прямоугольной подошвы
фундамента.
2. В ячейки B6:I6 вводятся соответственно «Уровни», «Шаг»,
«Ширина», «η», «Давление», «z», «ξ» и «σzp». Уровни – это порядковые
номера рассматриваемых глубин, где определяются напряжения. Шаг –
это шаг определения напряжений. Ширина – это ширина подошвы
фундамента. η – это отношение длины к ширине подошвы фундамента.
Давление – это дополнительное уплотняющее давление на основание. z –
это расстояние от подошвы фундамента до рассматриваемой глубины, где
определяется напряжение. ξ – это относительна глубина расположения
рассматриваемого уровня, определяемая по формуле
, где b-
ширина подошвы фундамента. σzp – это вертикальное нормальное
напряжение от внешней нагрузки на глубине z, определяемая по формуле
(5).
3. В ячейку G7 вводится формула B7*$C$7. При запуске приложения
содержимое ячейки будет копироваться вниз. Абсолютная ссылка $C$7
остается неизменным, а относительная ссылка B7 каждый раз
увеличивается на единицу. В результате в ячейки, расположенные ниже
ячейки B7, автоматически вносятся расстояния от подошвы фундамента.
4. В ячейку H7 вводится формула 2*G7/$D$7. Содержимое ячейки
также будет копироваться вниз, т.е. в остальные ячейки автоматически
будут вноситься относительные глубины рассматриваемых уровней.
5. В ячейку I8 вводится формула (140), которая в строке формул
принимает следующий вид
=2*$I$7/ПИ()*(ATAN($E$7/(H8*КОРЕНЬ(1+H8^2+$E$7^2)))+(H8*$E$7*(
1+
+$E$7^2+2*H8^2))/((H8^2+$E$7^2)*(1+H8^2)*КОРЕНЬ(1+H8^2+$E$7^2))
)
Содержимое ячейки также будет копироваться вниз, и в результате
автоматически будут определяться напряжения на разных глубинах.
6. С помощью мастера диаграмм строится шаблон графика,
показанный на рис. 6.8. Самого графика пока нет, так как нет числовых
значений z и σzp. После запуска приложения и ввода необходимых
данных с помощью пользовательских форм в столбцах G7:G27 и I7:I27
появятся значения z и σzp, а затем мгновенно появится и сам график.
Глубину определения напряжений выбирает пользователь.
7. После запуска приложения программа введет необходимые
исходные данные для расчета напряжений в ячейки C7:F7.
38

Рис. 14. Пример определения напряжений для ленточной подошвы.
Рис. 13. Пример определения напряжений для прямоугольной подошвы.
В качестве примера на рис. 13 и 14 приведены результаты расчета
напряжений по глубине через каждые 1,08 и 0,64 м соответственно для
прямоугольной и ленточной формы подошвы фундамента. Исходные
данные также даны на этих рисунках.
39

Рис. 16. Шаблон листа Ленточный.
Рис. 15. Шаблон листа Квадратный.
Шаблоны остальных листов разрабатываются также как и шаблон
листа Прямоугольный. В ячейках F7 и G7 листов «Квадратный»,
«Ленточный» и «Круглый» вводятся соответственно формулы B7*$C$7 и
2*F7/$D$7. В ячейку H8 рабочих листов вводятся следующие формулы:
- для шаблона листа «Квадратный» (рис. 15)
=2*$H$7/ПИ()*(ATAN(1/(G8*КОРЕНЬ(2+G8^2)))+(G8*(2+2*G8^2))/((1+
+G8^2)*(1+G8^2)*КОРЕНЬ(2+G8^2)))
- для шаблона листа «Ленточный» (рис. 16)
=2*$H$7/ПИ()*(ATAN(1/G8)+G8/(1+G8^2))
- для шаблона листа «Круглый» (рис. 17)
=$H$7*(1-(1/(1+($D$7/(2+F8))^2))^(3/2))
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
