Важная информация
Показано с 1 по 7 из 7

Тема: ПОМОГИТЕ ПОЖАЛУЙСТА

  1. #1 ПОМОГИТЕ ПОЖАЛУЙСТА 
    Новичок
    Регистрация
    02.12.2018
    Сообщений
    4
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Код :
    Private Sub CommandButton1_Click()
    Dim a, b, c, d, e, z, v, N, m, k As Double
    pi = 3.14159265358979
    If IsNumeric(UserForm1.TextBox1) = False Then UserForm1.TextBox1 = "001"
    If IsNumeric(UserForm1.TextBox2) = False Then UserForm1.TextBox2 = "001"
    If IsNumeric(UserForm1.TextBox3) = False Then UserForm1.TextBox3 = "001"
    If IsNumeric(UserForm1.TextBox4) = False Then UserForm1.TextBox4 = "001"
    If IsNumeric(UserForm1.TextBox5) = False Then UserForm1.TextBox5 = "001"
    If IsNumeric(UserForm1.TextBox6) = False Then UserForm1.TextBox6 = "001"
    If IsNumeric(UserForm1.TextBox7) = False Then UserForm1.TextBox7 = "001"
    If IsNumeric(UserForm1.TextBox8) = False Then UserForm1.TextBox8 = "001"
    If IsNumeric(UserForm1.TextBox9) = False Then UserForm1.TextBox9 = "001"
    If IsNumeric(UserForm1.TextBox10) = False Then UserForm1.TextBox10 = "001"
    MsgBox "Если значение в ячейках изменится на 001, то проверьте значения переменных на правильность ввода"
    If UserForm1.TextBox1 = 0 And UserForm1.TextBox2 = 0 Then UserForm1.TextBox1 = "002" And UserForm1.TextBox2 = "002"
    If UserForm1.TextBox3 = 0 And UserForm1.TextBox4 = 0 Then UserForm1.TextBox3 = "002" And UserForm1.TextBox4 = "002"
    If UserForm1.TextBox5 = 0 And UserForm1.TextBox6 = 0 Then UserForm1.TextBox5 = "002" And UserForm1.TextBox6 = "002"
    If UserForm1.TextBox7 = 0 And UserForm1.TextBox8 = 0 Then UserForm1.TextBox7 = "002" And UserForm1.TextBox8 = "002"
    If UserForm1.TextBox9 = 0 And UserForm1.TextBox10 = 0 Then UserForm1.TextBox9 = "002" And UserForm1.TextBox10 = "002"
    MsgBox "Если значение в ячейках изменится на 002, то при расчете вы пришли к неопределенности вида 0/0, что недопустимо."
    a = ((1 * 2 * UserForm1.TextBox2.text + 5 * UserForm1.TextBox1.text * 1) / (1 * 5 * UserForm1.TextBox1.text + 1 * (-2) * UserForm1.TextBox2.text) * 180 / pi)
    b = ((1 * 3 * UserForm1.TextBox4.text + 2 * UserForm1.TextBox3.text * 1) / (1 * 2 * UserForm1.TextBox3.text + 1 * (-3) * UserForm1.TextBox4.text) * 180 / pi)
    c = ((1 * 1 * UserForm1.TextBox6.text + 3 * UserForm1.TextBox5.text * 1) / (1 * 3 * UserForm1.TextBox2.text + 1 * 1 * UserForm1.TextBox6.text) * 180 / pi)
    d = ((1 * 2 * UserForm1.TextBox8.text + 4 * UserForm1.TextBox7.text * 1) / (1 * 4 * UserForm1.TextBox7.text + 1 * (-2) * UserForm1.TextBox8.text) * 180 / pi)
    e = ((1 * 2 * UserForm1.TextBox10.text + 3 * UserForm1.TextBox9.text * 1) / (1 * 3 * UserForm1.TextBox7.text + 1 * (-2) * UserForm1.TextBox10.text) * 180 / pi)
     
    If a < 0 Then z = 180 + a Else z = a
    If b < 0 Then v = 180 + b Else v = b
    If c < 0 Then N = 180 + c Else N = c
    If d < 0 Then m = 180 + d Else m = d
    If e < 0 Then k = 180 + e Else k = e
    UserForm1.TextBox11 = z
    UserForm1.TextBox12 = v
    UserForm1.TextBox13 = N
    UserForm1.TextBox14 = m
    UserForm1.TextBox15 = k
    End Sub
     
    Private Sub CommandButton2_Click()
    UserForm1.Hide
    End Sub
     
    Private Sub CommandButton3_Click()
    Dim TempPath As String
    Dim doc
    Set doc = CreateNewWordDocument(TempPath)
    With doc
    .PageSetup.TopMargin = CentimetersToPoints(2)
    .PageSetup.BottomMargin = CentimetersToPoints(1.5)
    End With
    doc.Activate
    Dim aPart1
    Dim aPart2
    Dim aPart3
    Dim R
    Set R = doc.Range
     Set aPart1 = AddNewParagraphRange(R)
     Set aPart2 = AddNewParagraphRange(R)
     Set aPart3 = AddNewParagraphRange(R)
    Dim RangeTitle1 As Range
    Dim RangeTitle2 As Range
    Dim RangeTitle3 As Range
    Set RangeTitle1 = WriteParagraphLn(aPart1, "1 Условия задачи. " & vbNewLine & "Определить углы между заданной функцией x+y-2=0, и функциями 5*a1*x-2*a2*y-3=0, 2*a3*x-3a4y+2=0, 3*a5*x+a6*y+4=0, 4*a7*x-2*a8*y-7=0, 3*a9*x-2*a10*y+4=0, в которых есть дополнительные параметры, которые задаются пользователем вручную.")
    Set RangeTitle2 = WriteParagraphLn(aPart2, "2 Решение." & vbNewLine & "Воспользуемся специальной формулой, позволяющей нам найти тангенсы этих углов, исходя из которых мы далее найдем сами углы: tg альфа=(a1*b2-a2*b1)/(a1*a2+b1*b2). Так мы найдем радианы, но нам нужна понятная нам мера углов - поэтому дополнительно мы умножим результат на 180 и поделим на pi. ")
    Set RangeTitle3 = WriteParagraphLn(aPart3, "3 Результат." & vbNewLine & " ", "")
    Dim Table
    Set Table = AddTableIntoRange(aPart1, 10, 2, True)
    WriteParagraphLn TableInRange2.Cell(1, 1).Range, "a1"
    WriteParagraphLn TableInRange2.Cell(2, 1).Range, "a2"
    WriteParagraphLn TableInRange2.Cell(3, 1).Range, "a3"
    WriteParagraphLn TableInRange2.Cell(4, 1).Range, "a4"
    WriteParagraphLn TableInRange2.Cell(5, 1).Range, "a5"
    WriteParagraphLn TableInRange2.Cell(6, 1).Range, "a6"
    WriteParagraphLn TableInRange2.Cell(7, 1).Range, "a7"
    WriteParagraphLn TableInRange2.Cell(8, 1).Range, "a8"
    WriteParagraphLn TableInRange2.Cell(9, 1).Range, "a9"
    WriteParagraphLn TableInRange2.Cell(10, 1).Range, "a10"
    WriteParagraphLn TableInRange2.Cell(1, 2).Range, UserForm1.TextBox1
    WriteParagraphLn TableInRange2.Cell(2, 2).Range, UserForm1.TextBox2
    WriteParagraphLn TableInRange2.Cell(3, 2).Range, UserForm1.TextBox3
    WriteParagraphLn TableInRange2.Cell(4, 2).Range, UserForm1.TextBox4
    WriteParagraphLn TableInRange2.Cell(5, 2).Range, UserForm1.TextBox5
    WriteParagraphLn TableInRange2.Cell(6, 2).Range, UserForm1.TextBox6
    WriteParagraphLn TableInRange2.Cell(7, 2).Range, UserForm1.TextBox7
    WriteParagraphLn TableInRange2.Cell(8, 2).Range, UserForm1.TextBox8
    WriteParagraphLn TableInRange2.Cell(9, 2).Range, UserForm1.TextBox9
    WriteParagraphLn TableInRange2.Cell(10, 2).Range, UserForm1.TextBox10
    Dim TableLast
    Set TableLast = AddTableIntoRange(aPart3, 5, 2, True)
    WriteParagraphLn TableInRange2.Cell(1, 1).Range, "угол a"
    WriteParagraphLn TableInRange2.Cell(2, 1).Range, "угол b"
    WriteParagraphLn TableInRange2.Cell(3, 1).Range, " угол c"
    WriteParagraphLn TableInRange2.Cell(4, 1).Range, "угол d"
    WriteParagraphLn TableInRange2.Cell(5, 1).Range, "угол e"
    WriteParagraphLn TableInRange2.Cell(1, 2).Range, UserForm1.TextBox11
    WriteParagraphLn TableInRange2.Cell(2, 2).Range, UserForm1.TextBox12
    WriteParagraphLn TableInRange2.Cell(3, 2).Range, UserForm1.TextBox13
    WriteParagraphLn TableInRange2.Cell(4, 2).Range, UserForm1.TextBox14
    WriteParagraphLn TableInRange2.Cell(5, 2).Range, UserForm1.TextBox15
    End Sub
    Public Function AddTableIntoRange(rngRange, NumCols, NumRows, Autofit)
    Dim rngRange As Range
    Dim lk
    Set lk = rngRange.Tables.Add(rngRange, NumRows, NumCols)
    If Autofit Then lk.AutoFitBehavior wdAutoFitContent
    lk.Range.Font.Name = "Tahoma"
    lk.Range.Font.Size = 16
    lk.Range.Font.Bold = True
    lk.Style = "границы таблицы "
    IntoRange.Paragraphs.Last.Style = "обычный"
    Set AddTableIntoRange = lk
    End Function
    Public Function CreateNewWordDocument(TempPath)
    Dim wd
    Set App = CreateObject("Word.Application")
    App.Visible = True
    Set wd = App.Documents.Add(TempPath)
    Set CreateNewWordDocument = wd
    End Function
    Public Function WriteParagraphLn(ARange, text, StyleName) As Range
     Dim stpos As Long
     stpos = ARange.End
     If Len(ARange) <= 2 Then
     ARange.InsertAfter text
     Else
     ARange.InsertParagraphAfter
     ARange.Document.Range(ARange.End, ARange.End + 1).Style = wdNormalStyleName
     ARange.InsertAfter text
     End If
    Sub Макрос3()
    UserForm1.Hide
    End Sub
    Public Function AddNewParagraphRange(ARange)
     Dim NewParagraph
     Dim NewRange
     Dim I As Integer
     I = ARange.Paragraphs.Count
     ARange.InsertParagraphAfter
     Set NewRange = ARange.Paragraphs(I).Range
     NewRange.StartOf wdWord, wdMove
     Set AddNewParagraphRange = NewRange
    End Function
     
    Private Sub UserForm_Click()
     
    End Sub
    Изображения
    Ответить с цитированием  
     

  2. #2  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,691
    Сказал(а) спасибо
    1,736
    Поблагодарили 882 раз(а) в 754 сообщениях
    Записей в блоге
    1
    Третий параметр WriteParagraphLn кому наваял?
    Боже какой ужасный говнокод.

    И дальше по тексту:
    WriteParagraphLn TableInRange2.Cell(1, 1).Range, "a1"

    Это функция, компилятор тебя "кинет"...
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    Ограниченно модерирую.
    Ответить с цитированием  
     

  3. #3  
    Admin
    Регистрация
    09.04.2014
    Сообщений
    1,192
    Сказал(а) спасибо
    752
    Поблагодарили 470 раз(а) в 384 сообщениях
    А в чём нужна помощь...?
    Не увидел постановки задачи...)
    Ответить с цитированием  
     

  4. #4  
    Новичок
    Регистрация
    02.12.2018
    Сообщений
    4
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от Free Admin Посмотреть сообщение
    А в чём нужна помощь...?
    Не увидел постановки задачи...)
    Надо код исправить, чет не получается
    Ответить с цитированием  
     

  5. #5  
    Admin
    Регистрация
    09.04.2014
    Сообщений
    1,192
    Сказал(а) спасибо
    752
    Поблагодарили 470 раз(а) в 384 сообщениях
    Цитата Сообщение от Юрий Ефимов Посмотреть сообщение
    Надо код исправить, чет не получается
    что значит исправить код, что конкретно не так, что за ошибка...?
    Ответить с цитированием  
     

  6. #6  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,691
    Сказал(а) спасибо
    1,736
    Поблагодарили 882 раз(а) в 754 сообщениях
    Записей в блоге
    1
    Цитата Сообщение от Free Admin Посмотреть сообщение
    что значит исправить код, что конкретно не так, что за ошибка...?
    Он там пытается из формы забивать лист в Word через макросы(и смотрит действия, видимо, через запись макроса).
    Само задание не уточняется, но суть одна: без знания объектной модели что-то делать там бесполезно, а судя
    по тому что путается процедура с функцией, а тип данных инициализируется дефолтным(интересно он знает каким?)
    и т.п. - проблема тут гораздо обширнее.

    Конечно какие-то знания есть - "с миру по нитке", но очевидно, что так можно долго тыркаться и ошибок
    будет много.

    Тут человеку просто нужна книга по макросам в Word, где будет описана объектная модель.

    Справочник есть на сайте Microsoft: https://docs.microsoft.com/ru-ru/off...d/object-model
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    Ограниченно модерирую.
    Ответить с цитированием  
     

  7. #7  
    Admin
    Регистрация
    09.04.2014
    Сообщений
    1,192
    Сказал(а) спасибо
    752
    Поблагодарили 470 раз(а) в 384 сообщениях
    Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
    Тут человеку просто нужна книга по макросам в Word, где будет описана объектная модель.
    я и пытаюсь ему сказать, что он должен сначала понять что он делает, и задать вопрос...)
    Ответить с цитированием  
     

  8. Пользователь сказал cпасибо:

    >Quiet Snow< (04.12.2018)

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Пожалуйста помогите!!!
    от Aleksej2899 в разделе Общие вопросы web-разработки
    Ответов: 1
    Последнее сообщение: 23.03.2018, 12:06
  2. Помогите пожалуйста
    от Tip в разделе Turbo Pascal
    Ответов: 2
    Последнее сообщение: 16.11.2016, 10:54
  3. Помогите пожалуйста!
    от Катюша Мажорова в разделе Другие языки программирования
    Ответов: 0
    Последнее сообщение: 23.09.2014, 20:59
  4. Помогите пожалуйста!
    от Настена_Д в разделе C/C++
    Ответов: 1
    Последнее сообщение: 02.01.2014, 12:56
  5. помогите пожалуйста=(
    от 7Assassin7 в разделе Общие вопросы web-разработки
    Ответов: 0
    Последнее сообщение: 20.12.2013, 17:11
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •