Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Задачи на Visual Basic (VB).

Автор: Kri
Дата сообщения: 18.10.2007 13:40
Как сделать чтобы при закрытии файла (нажимают на крестик) или при печати, выскакивало определенное сообщение ?
Спасибо.
Автор: phper
Дата сообщения: 18.10.2007 19:29
AndronH
Большое спасибо =)
Оказывается всет так просто =)
Автор: dneprcomp
Дата сообщения: 18.10.2007 19:49
Kri
Используй события формы Private Sub Form_QueryUnload или Private Sub Form_Unload
Как вызывается печать?
Автор: Kri
Дата сообщения: 19.10.2007 08:32
На кнопку нажимают.
Автор: dneprcomp
Дата сообщения: 19.10.2007 09:10
Kri
На какую кнопку? Кто писал процедуру для кнопки? В общем случае, добавляй вызов msgbox в процедуру кнопки.
Автор: mikeryrg
Дата сообщения: 20.10.2007 12:53
подскажите как в vb работать с ole объектом, в моем случае это таблица excel
можете дать пример как в ячейку поместить какое-нибудь значение?
Автор: maratino
Дата сообщения: 20.10.2007 21:59
artemds
Может вы подскажите код textbox который и числа умеет фильтровать
этот код с текстом работает, а с цифрами никак

вот код, который текст признает а цифры нет

Private Sub TextBox1_Change()
If TextBox1.Text <> "" Then
Range("A2").AutoFilter Field:=1, Criteria1:="=" & TextBox1.Text & "*", Operator:=xlAnd
Else
Range("A2").AutoFilter Field:=1
End If
End Sub

Private Sub TextBox2_Change()
If TextBox2.Text <> "" Then
Range("B2").AutoFilter Field:=2, Criteria1:="=" & TextBox2.Text & "*", Operator:=xlAnd
Else
Range("B2").AutoFilter Field:=2
End If
End Sub
Автор: kpblc
Дата сообщения: 20.10.2007 22:23
VB6
Код: Option Explicit

Private Sub Text1_Change()
Dim CharCode As Integer
With Me
If .Text1.Text <> "" Then
CharCode = Asc(Right(.Text1.Text, 1))
If Not ((CharCode >= 48 And CharCode <= 57) Or CharCode = 46 Or CharCode = 44) Then
.Text1.Text = Left(.Text1.Text, Len(.Text1.Text) - 1)
.Text1.SelStart = Len(.Text1.Text)
End If
End If
End With
End Sub
Автор: RustamNazarov
Дата сообщения: 30.10.2007 11:34
Задача состоит в следующем:
Вставить в форму элемент управления RichTextBox, который позволя бы ввести также математические формулы. Для этого пусть вставиться командная кнопка CommandButton. Т.е. после выполнения приложения, пользователь вводить в поле RichTextBox какой-либо текст и при необходимости (когда находится в позиции, где нужна ввести математическую формулу) нажимает на командную кнопку. При нажатии этой кнопки с использованием функции Shell вызывается редактор формул Microsoft Equation Editor. Пользователь вводить формулу.
А теперь вопрос: Как можно получить (вставить) эту формулу в соответвующее место, т.е. после набора когда закрывается окно редактора формул? Т.е. при выходе из редактора без использовании действия Копировать/Вырезать - Вставить.
Автор: Kaba4ok
Дата сообщения: 10.11.2007 16:14
Привет Всем. Смиренно прощу о помощи Великих Программеров решить задачки.

1)Даны: Натуральное число n, действительные числа a0, a1,..., an. Вычислить последовательность а1+1!, а2+2!, an+n!.

2) Дана матрица натуральных чисел X(n,m). Упорядочить строки матрицы по возрастанию суммы цифр в десятичной системе счисления, используемых для записи элементов строки.

Заранее благодарю за помощь.
Автор: Lost_Firefly
Дата сообщения: 10.11.2007 20:21
Добрый всем вечер!
Помогите, пожалуйста, решить две задачки!
Сдать надо уже в понедельник, а я в VB ничего не понимаю... То есть ненмого понимаю.. Не совсем по специальности...
заранее спаисбо )


Задача 1.
1. Добавьте на форму Взрыв (frmBomb) объекты: lblInfrom, imgBomb, imgFire.
Разрешите для перетаскивания для imgFire и добавьте рисунок спички в свойство (рисунок перетаскивания)
2. Объявите переменную счетчика k как целое число в разделе объявления переменных.
3. Для событий сброс объекта на бомбу запрограммируйте:
- бросаемый объект (Source) становится невидимым;
- рисунок бомбы изменяется на bomb1.jpg
- запускается таймер tmr1;
- k=5
4. Для процедуры таймер 1 tmr1 сделайте проверку значения переменной k,
Если k >= 1, тогда в надписи появляется значение k,
Иначе:
- исчезает рисунок бомбы,
- появляется красная надпись ВООМ!;
- цвет фона становится синим,
Отключается таймер 1 и запускается таймер 2.
5. Запрограммируйте таймер 1.
- исчезновение надписи
- появление рисунка облака точно по центру;
- если облако не достигло верхней границы формы – передвижение облака вверх и вправо на 50 единиц относительно предыдущего;
Иначе:
- таймер 2 отключается;
- облако исчезнет;
- с краю формы появляется надпись «КОНЕЦ»

Задача 2:
Создайте анимации полета шмеля, при нажатии кнопки Старт.
Автор: Tanya3000
Дата сообщения: 11.11.2007 21:51
Здрасвстуйте!
Помогите пожалуйста на Vba: вывести слово с номером K заданного предложения.
Заранее спасибо!
Автор: Smirnov007
Дата сообщения: 12.11.2007 23:26
У меня есть маленькая проблема.

Код: input x$
if x$ = a then print 1
Автор: kpblc
Дата сообщения: 13.11.2007 01:21

Код: Sub query()
Dim strValue As String
Dim res As Integer
strValue = InputBox("value")
Select Case LCase(strValue)
Case "a"
res = 1
Case "b"
res = 2
Case "c"
res = 3
End Select
Debug.Print strValue & " : " & CStr(res)
End Sub
Автор: SAS888
Дата сообщения: 13.11.2007 07:34
Tanya3000

Цитата:
вывести слово с номером K заданного предложения.
Заранее спасибо!

Например, решение с помощью функции:

Function Substring(Txt, Delimiter, n) As String
Dim x As Variant
x = Split(Txt, Delimiter)
If n > 0 And n - 1 <= UBound(x) Then
Substring = x(n - 1)
Else
Substring = ""
End If
End Function

Задаем ячейку, содержащую текст, разделитель и номер нужного слова.
Если функция не нужна - используй в своем коде VBA.

Добавлено:
Smirnov007

Цитата:
Введите слово: abc
Шифр: 123

Можно проще:

Sub CodeStr()
Dim x As String
Dim Cod As String
x = InputBox("Value")
For i = 1 To Len(x)
Cod = Cod & (Asc(Right(Left(x, i), 1)) - 96)
Next i
MsgBox "Шифр = " & Cod
End Sub

Здесь, конечно, в полном соответствии порядку будут только строчные буквы латинского алфавита. Если надо, можно вставить проверку. Только не известно как тогда "нумеровать" алфавит.
Автор: Smirnov007
Дата сообщения: 13.11.2007 14:31

Цитата:
Можно проще

Хех... Как бы сказать чтобы меня не ругали: Мне бы это на QBaisic, понимаю что не тот язык, но язык то простой. У меня как я говорил две проблемы:
1) input x
if x=1 then print "a"
if x=2 then print "b"
Ввожу "1" выдет "а", но когда ввожу "12" то он мне "ab" не выдает
2) Буквы из чисел как вы видите из первого пункта делать могу, но как превратить буквы в числа если переменная не хочет присваивать себе буквенные значения
Автор: kpblc
Дата сообщения: 13.11.2007 15:27
Я не знаю qbasic, но неужели там нет функций Left и Right?
Потом, попробуй все же сравнивать, к примеру, так:

Код: input x
For Counter=0 to len(x)
y=left(right(x,Counter+1),1)
select case y
case "1"
print "a"
case "2"
print "b"
end select
next Counter
Автор: Smirnov007
Дата сообщения: 13.11.2007 16:34

Цитата:
попробуй все же сравнивать

Спасибо помогло. Сообщения нормально шифруются. Я просто делаю проект по криптографии. Вот находу учусь программированию.
Автор: Tanya3000
Дата сообщения: 13.11.2007 21:13
вывести слово с номером K заданного предложения.

SAS888 я не поняла ваше решение, через функцию это не то. Там надо пробелы считать...
Автор: Beldesign
Дата сообщения: 14.11.2007 01:51
Привет всем! Подскажите направление решения такой задачи на vb для exell необходим макрос который выдает список фалов из определенной папки и вставляет их в столбец в exell документ. Заранее благодарен!
Автор: SAS888
Дата сообщения: 14.11.2007 05:26
Tanya3000

Цитата:
я не поняла ваше решение, через функцию это не то. Там надо пробелы считать...


Объявляем функцию. Далее используем ее в своем коде:

Sub qq()
Txt = Application.Trim(Range("A1")) 'ячейка,содержащая текст (или строковая переменная)
Delimiter = " " 'разделитель
n = 4 'номер слова в предложении
MsgBox Substring(Txt, Delimiter, n) 'Substring - искомое слово
End Sub

Обрати внимание, что Excel-евская функция Application.Trim(...), в отличии от VBA-шной Trim(...), удаляет "лишние" пробелы между словами.

Добавлено:
Beldesign

Цитата:
список фалов из определенной папки

Фрагмент из книги Дж.Уокенбаха:
Отображение списка файлов в папке.
Следующая процедура отображает (на активном рабочем листе) список файлов, которые
содержатся в определенной папке. Кроме того, отображается размер каждого файла, а также
дата последнего изменения.

Sub ListFiles()
Directory = "C:\Windows\Temp\"
r = 1
'Вставка заголовков
Cells(r, 1) = "FileName"
Cells(r, 2) = "Size"
Cells(r, 3) = "Date/Time"
Range("A1:C1").Font.Bold = True
'Получение первого файла
f = Dir(Directory, 7)
Do While f <> ""
r = r + 1
Cells(r, 1) = f
Cells(r, 2) = FileLen(Directory & f)
Cells(r, 3) = FileDateTime(Directory & f)
'Получение следующего файла
f = Dir
Loop
End Sub
Автор: Kuzmich07
Дата сообщения: 14.11.2007 12:18
Коллеги, выручайте, задача непростая, нужно направление решения.

Я работаю в конторе и сфере бизнеса где про xml еще не слышаи и обмениваются с партнерами кучами екселей.

В полученном екселе нужно выбрать ряд параметров (комбо-боксы), ввести прямые значения в ячейки, нажать пару кнопок и получить в итоговой ячейке результат.
Проблема в том, что логика в этих екселях является закрытой, документы полностью защищены - только возюканьем мышки по коврику можно получить итоговую цифирь

Я хочу написать программу в том же Excel VBA, которая бы эмулировала нажатия этих кнопок и выбирала нужные значения из списков.

Вопрос: это возможно? То есть могу ли я в VBA своего екселя открыть протектед документ, получить доступ к его визуальным классам и выполнить с ними какие-нибудь действия?

Если невозможно - посоветуйте хорошую крякалку для защищенных MS документов.

ЗЫ: в VBA силен, но не очень, к ячейкам и форматам обращаться умею, но вот с GUI-классами не работал.



Спасибо заранее!
Автор: Beldesign
Дата сообщения: 14.11.2007 12:19
SAS888

Спасибо большое работает, я не работаю с vba но мне нужно доделать этот скрипт, помогите еще пожалуйста, нужно чтобы макрос запросил ввести путь поиска, и врезультате выдал данные по всем файлам txt расположенном по этому пути в три столбца 1 имя, 2 размер, 3 пустой столбец коментариев. Следующий запуск макроса добавлял бы в этот лист новый поиск продалжая предидущий и подсвечивал одним цветом повторяющиеся позиции по имени. Заранее благодарен (это очень важно)
Автор: SAS888
Дата сообщения: 14.11.2007 13:48
Beldesign

Цитата:
нужно чтобы макрос запросил ввести путь поиска

Ну, где-то так:
Sub Obrabotka()
Dim FS As FileSearch
Dim FilePath As String, FileSpec As String
Dim i As Integer
Dim q As Integer
Dim NextRow As Integer
'Запрос имени папки
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:\"
.Title = "Укажите рабочую папку"
.Show
If .SelectedItems.Count = 0 Then
Exit Sub
Else
FilePath = .SelectedItems(1) & "\"
End If
End With
'Поиск файлов *txt
FileSpec = "*.txt"
Set FS = Application.FileSearch
With FS
.NewSearch
.LookIn = FilePath
.FileName = FileSpec
.Execute
If .FoundFiles.Count = 0 Then
MsgBox "Файлы *.txt не найдены"
Exit Sub
End If
End With
Application.ScreenUpdating = False
Cells(1, 1) = "FileName"
Cells(1, 2) = "Size"
Cells(1, 3) = "Comment"
Range("A1:C1").Font.Bold = True
For i = 1 To FS.FoundFiles.Count
Call ProcessFiles(FS.FoundFiles(i))
Next i
'Подсветка файлов
i = 1
q = 2
Do While i < ActiveSheet.Range("A65536").End(xlUp).Row
Do While q < ActiveSheet.Range("A65536").End(xlUp).Row
Comp = StrComp(Cells(i, 1), Cells(q, 1), vbTextCompare)
If Comp = 0 Then
Rows(i).Select
Selection.Interior.ColorIndex = 6
Rows(q).Select
Selection.Interior.ColorIndex = 6
End If
q = q + 1
Loop
i = i + 1
q = i + 1
Loop
Range("A1").Select
End Sub
Sub ProcessFiles(FileName As String)
Dim NextRow As Integer
NextRow = 1 + ActiveSheet.Range("A65536").End(xlUp).Row
Cells(NextRow, 1) = Dir(FileName)
Cells(NextRow, 2) = FileLen(FilePath & FileName)
End Sub
Автор: Beldesign
Дата сообщения: 14.11.2007 14:43
SAS888
Большое спасибо если что-то необходимо по графике и дизайну помогу с удовольствием в любое время и последний вопрос, что нужно изменить чтобы искать сразу два расширения txt b inf Обращайтесь за помощью чем смогу тем помогу
Автор: Kaba4ok
Дата сообщения: 14.11.2007 15:33
Плииз выручайте.
Даны: Натуральное число n, действительные числа a0, a1,..., an. Вычислить последовательность а1+1!, а2+2!, an+n!.
Автор: kpblc
Дата сообщения: 14.11.2007 16:00
А самому подумать
[more]
Код: Option Explicit
Option Base 0

Public Function EvalFactorial(ByVal iValue As Integer) As Long
If iValue <= 0 Then
EvalFactorial = 1
Else
EvalFactorial = EvalFactorial(iValue - 1) * iValue
End If
End Function

Public Function EvalRange(ValueArray As Variant) As Variant
Dim lCounter As Long
Dim Res() As Long
On Error GoTo lErrorReDim
For lCounter = 0 To UBound(ValueArray)
ReDim Preserve Res(lCounter)
Res(lCounter) = ValueArray(lCounter) + EvalFactorial(lCounter + 1)
Next lCounter
EvalRange = Res
Exit Function
lErrorReDim:
ReDim Res(0)
Resume Next
End Function

Sub test()
Dim locCounter As Long, Arr(3) As Integer, Res As Variant
Dim str As String
Arr(0) = -10: Arr(1) = 2: Arr(2) = 5: Arr(3) = 1
Res = EvalRange(Arr)
For locCounter = 0 To UBound(Res)
If str <> "" Then
str = str & vbCr & "#" & CStr(locCounter + 1) & " " & CStr(Arr(locCounter)) & " : " & CStr(Res(locCounter))
Else
str = "#" & CStr(locCounter + 1) & " " & CStr(Arr(locCounter)) & " : " & CStr(Res(locCounter))
End If
Next locCounter
MsgBox str, vbOKOnly + vbInformation
End Sub
Автор: Kaba4ok
Дата сообщения: 14.11.2007 16:29
о_О самому думать?! шучу. Спасибо

Добавлено:
Ой, а еще одну смогете? Последняя...чесслово

Дана матрица натуральных чисел X(n,m). Упорядочить строки матрицы по возрастанию суммы цифр в десятичной системе счисления, используемых для записи элементов строки.
Автор: Beldesign
Дата сообщения: 14.11.2007 19:38
SAS888Большое спасибо я всетаки дальше разобрался
Автор: Tanya3000
Дата сообщения: 14.11.2007 23:35
SAS888 я вас уже достала наверно.....очень прошу, не могли бы вы в точности написать, как мне нужно все вводить....а то что-то то, что вы написали у меня не срабатывает. Спасиюбо!


Добавлено:
мне на vba надо

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

Предыдущая тема: для Hiper-six (индексы .nsx .smt) хоть что нибудь Опции


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.