VBA - Visual Basic 2008

Ответить
 • Просмотры: 2
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Кстати, что такое цикл For Each?

Чет я немогу понять как юзать FindNext/FindPrevious. Можно показать на примере? В том примере не смог ничего путного понять.
Аватара пользователя
mrcnn

Re: VBA - Visual Basic 2008

Сообщение mrcnn »

Как полностью вырубить в VB.Net



1. синтаксическую проверку во время написания программы (подчерки и т.д.)



2. всяческие исправления

a) табулирование,

b) замены маленьких букв на большие,

c) постановку скобок,

d) авто закрытие циклов,

e) автозакрытие функций

и т.п



Заранее спасибо за ответ
Аватара пользователя
mrcnn

Re: VBA - Visual Basic 2008

Сообщение mrcnn »

For Each очень удобен когда на перёд не известно количество элементов, а While и Repeat не охота пристраивать,
пример
. Указанный Find/FindNext/FindPrevious будут работать при табличном представлении строчки, например как в Excel при указание Range.

Сдесь же можно переделать, добавив на форму ещё RichTextBox1 (для хранения строки и отображения результата) и TextBox1(для указания чего искать), указанный код к такому виду.



Код:

Код: Выделить всё

Public Class Form1
    Dim FindingString As String = "asdgfsdfgsdfgsdfgStringsdfgsdfgsdfgStringsdfgsdfgsdfgString"
    Dim FindString As String = "String"
    'Dim FirstTemp As String = ""
    'Dim SecondTemp As String = ""
    'Dim ValidateTemp As Integer = 0
    Dim start As Integer = 0
    Dim indexOfSearchText As Integer = 0
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        RichTextBox1.Text = FindingString
        TextBox1.Text = FindString
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'If ValidateTemp = 0 Then
        'ValidateTemp = 1
        'FirstTemp = FindingString
        'SecondTemp = Mid(FirstTemp, InStr(FirstTemp, FindString))
        'FirstTemp = SecondTemp
        'MsgBox(FirstTemp)
        'Else
        'SecondTemp = Mid(FirstTemp, InStr(FirstTemp, FindString) + Len(FindString))
        'FirstTemp = SecondTemp
        'SecondTemp = Mid(FirstTemp, InStr(FirstTemp, FindString))
        'FirstTemp = SecondTemp
        'MsgBox(FirstTemp)
        'End If
        Dim startindex As Integer = 0
        If TextBox1.Text.Length > 0 Then
            startindex = FindMyText(TextBox1.Text.Trim(), start, RichTextBox1.Text.Length)
        End If
        ' If string was found in the RichTextBox, highlight it
        If startindex >= 0 Then
            ' Set the highlight color as red
            RichTextBox1.SelectionColor = Color.Red
            ' Find the end index. End Index = number of characters in textbox
            Dim endindex As Integer = TextBox1.Text.Length
            ' Highlight the search string
            RichTextBox1.Select(startindex, endindex)
            ' mark the start position after the position of 
            ' last search string
            start = startindex + endindex
        End If
    End Sub
    Public Function FindMyText(ByVal txtToSearch As String, ByVal searchStart As Integer, ByVal searchEnd As Integer) As Integer
        ' Unselect the previously searched string
        If searchStart > 0 AndAlso searchEnd > 0 AndAlso indexOfSearchText >= 0 Then
            TextBox1.Undo()
        End If
        ' Set the return value to -1 by default.
        Dim retVal As Integer = -1
        ' A valid starting index should be specified.
        ' if indexOfSearchText = -1, the end of search
        If searchStart >= 0 AndAlso indexOfSearchText >= 0 Then
            ' A valid ending index 
            If searchEnd > searchStart OrElse searchEnd = -1 Then
                ' Find the position of search string in RichTextBox
                indexOfSearchText = RichTextBox1.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None)
                ' Determine whether the text was found in richTextBox1.
                If indexOfSearchText  -1 Then
                    ' Return the index to the specified search text.
                    retVal = indexOfSearchText
                End If
            End If
        End If
        Return retVal
    End Function
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        start = 0
        indexOfSearchText = 0
    End Sub
End Class

После трёх нажатий в предыдущей версии коде выскакивает ошибка.



mrcnn,

Это всё выключается здесь Project -> Options-> Text Editor Basic -> VB Specific

Изображение
Аватара пользователя
mrcnn

Re: VBA - Visual Basic 2008

Сообщение mrcnn »

>>Это всё выключается здесь Project -> Options-> Text Editor Basic -> VB Specific



Отключения подчерков нет.
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Как работать с Error , Err и т.д. + как выводить справку, после нажатия в MsgBox на кнопку "Справка"
Аватара пользователя
Admiral

Re: VBA - Visual Basic 2008

Сообщение Admiral »

Весьма странно, что начинает прыгать и не выполнять выборку по Case. Тем не менее, ответ по избавлении от 9 Or 10 Or 12 Or 13 одним махом

Case Else

GoTo generaciya

Остальные комментарии в коде



Код:

Код: Выделить всё

Public Class Form1
    Dim i As Integer
    '   Dim v As Integer = 0 REM Оно нужно только для цикла, пускай там и создаётся
'...
Private Sub ret()
       'Do Until v = 20 REM Чем обусловлен выбор именно этого цикла?
        'v = v + 1 REM Если использовать For данной строчки не потребуется
        REM For и буду использовать
        For v As Integer = 0 To 20
generaciya:
            i = Int(Rnd() * 190 + 1)
            Select Case i
                Case 1 To 8
                    RichTextBox1.Text = RichTextBox1.Text & Chr(i)
                Case 11
                    RichTextBox1.Text = RichTextBox1.Text & Chr(i)
                Case 14 To 190
                    RichTextBox1.Text = RichTextBox1.Text & Chr(i)
                    'Case 9 Or 10 Or 12 Or 13 REM Если интересуют значение только 1-8, 11, 14-190 то здесь выборку не стоит делать, а написать
                Case Else
                    GoTo generaciya
            End Select
        Next v
    End Sub
'...

Хороший пример, что б показать как можно комбинировать операторы-комментаторы. Rem я использую - когда явно пишу комментарии, а ' - для отключения строчек кода.
Аватара пользователя
mrcnn

Re: VBA - Visual Basic 2008

Сообщение mrcnn »

Что за фигню (в каких единицах) мне возвращает Math.Acos и как эту фигню превратить в градусы?



Мне нужно значение в градусах, полученное из косинуса
Аватара пользователя
mrcnn

Re: VBA - Visual Basic 2008

Сообщение mrcnn »

mrcnn, MSDN нету? Ставится даже c Express редакцией. Причём на неё можно поставить
полный
не Express.



Всё верно результата возвращает в specified number.

Math.Acos Method
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Что делает эта комманда :

Код:

Код: Выделить всё

TextBox1.Undo()

?
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Что делает эта функция :

Код:
Ответить

Вернуться в «Программирование и базы данных»