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

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

Автор: Midbaril
Дата сообщения: 21.06.2009 19:29
Rush
dneprcomp
Спасибо вам! Работает! Теперь буду копать - как это работает. For...Next всегда меня сбивал с толку. Вроде все понятно, а через 5 минут - ни в одной извилине!
И отдельное спасибо, Rush, за ссылку на MSDN!
Автор: Rush
Дата сообщения: 22.06.2009 00:02
dneprcomp

Цитата:
А если =?


Цитата:
А если ResultPrev еще не инициализирован?

А в код посмотреть?
ResultPrev = abs(arрList(0) - a6) или это тебе ни о чем не говорит?
Если =, то естественно arрList(numindex) = arрList(0)

Я офигел. Объяснять такие очевидные вещи, вроде, опытному человеку...

Добавлено:
Midbaril
Кстати, если у тебя в массиве arрList значения последовательно растут, а не вразброс, то перед next можно вписать такую строчку:

Код: if x <> numindex then exit for
Автор: dneprcomp
Дата сообщения: 22.06.2009 08:45
Rush
Офигел, не офигел...
Во-первых, не обратил внимания. А во-вторых, что это такое - a6 ?
Автор: Midbaril
Дата сообщения: 23.06.2009 08:20
dneprcomp
a6 - это одна из переменных. Как раз тот самый, промежуточный результат. Просто, ты увидел кусок кода и тебе с ней не понятно (либо ты привык переменные называть более полно)

Добавлено:
Rush
dneprcomp
Кстати, может поделитесь некоторыми мыслями по одному поводу?
Начал свое путешествие в программировании с VB-6 (portable). Русифицировал (найденный русификатор оказался некорректен). Написал не одну программульку, удачные (для начала), интерес не пропал.
Неделю назад поставил почти весь Visual Studio 2008 Rus %). Весь потому, что не мог понять - ЧТО мне оттуда нужно, а чего не нужно. Ставил только ради VB-6 и возможности конвертировать код в нормальный ЕХЕ-дистрибутив.
Проблемка, в которой вы мне помогли (еще раз вам спасибо!) позволила мне продвигаться дальше. Так вот... Вчера скопировал код в VB-2008 и этот навороченный умник выдал мне 24 ошибки в написании кода! Как в Ворде, подчеркнул строки волнистой линией и всем ошибкам дал одно название "Недопустимый оператор для пространства имен".
Подчеркнул объявления переменных в Option Explicit, ВСЕ первые строки начала процедур (типа Private Sub mnuAbout_Click())! Ну чем ему не угодила эта строка с вызовом "О программе"?!?
Дал в справке поиск "Недопустимый оператор для пространства имен"... Единственное, что я понял после этого, что или придется забыть о VB-2008, или переходя на него, переучиваться заново, С НУЛЯ!
Автор: dneprcomp
Дата сообщения: 23.06.2009 20:01
Midbaril
VB6 и VB.NET из Visual Studio 2008 очень разные вещи, несмотря на одинаковое название. Так что напрямую код от VB6 вставить в VB.NET нельзя. Только если этот код элементарен и короток. Скажем, код "Hello, World" возможно воспримется корректно.
Логика работы программ осталась таже. Синтаксис достаточно близок к VB6. Особено именно начиная с VS 2008. Приемы програмирования другие. Взаимоотношения между элементами/блоками кода происходят по другому.
Автор: Zahi
Дата сообщения: 26.06.2009 11:00
Посмотрите http://rapidshare.com/files/248776524/TubingWizard.exe
это макро для solid edge http://www.barhamsoftware.com/SE_Tools/index.htm
нужно подредактировать фаил, а то он глючит.
Автор: Midbaril
Дата сообщения: 26.06.2009 21:05
dneprcomp
Вообще-то, я ничего не говорил о VB.NET . Код вставлял именно в VB (в VStudio 2008)
Автор: dneprcomp
Дата сообщения: 27.06.2009 00:27
Midbaril
Нет в Visual Studio 2008 просто VB. Только VB.NET
И не будет

Добавлено:
Начиная с 2003 все VB версии только .NET
Автор: maratino
Дата сообщения: 04.07.2009 12:04
Добрый день!
помогите отключить вертикальное выделение

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim addr As String
Dim x As Variant
Dim rng, c, r, cll As String

If NoEvents Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
addr = ActiveCell.Address()
x = Split(addr, "$")
c = x(1)
r = x(2)
rng = c & ":" & c & "," & r & ":" & r
Range(rng).Select
cll = c & r
Range(cll).Activate
End Sub
Автор: Mont1
Дата сообщения: 06.07.2009 03:06
maratino
Вместо строки

Цитата:
rng = c & ":" & c & "," & r & ":" & r

используй
rng = r & ":" & r

Автор: ZlydenGL
Дата сообщения: 07.07.2009 13:08
maratino, попытался вникнуть в твой текст. Т.е. получается, что если пользователь выделяет только ОДНУ ячейку - должен выделиться "крест" из пересекающейся строки и колонки? Так это ИМХО сделать проще

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = 1 Then
Range(Columns(Target.Column).Address & ", " & Rows(Target.Row).Address).Select
Target.Activate
End If
End Sub

Если же нужно выделять ТОЛЬКО горизонталь, код будет таким:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = 1 Then
Range(Rows(Target.Row).Address).Select
Target.Activate
End If
End Sub

Удачи!
Автор: maratino
Дата сообщения: 08.07.2009 12:46
Mont1
ZlydenGL
Вам обеим большое спасибо! Оба варианта работают
Но возникь другой аопрос
При активации ячейки, на форме появляется фото товара
проблема в том, что стрелки-клавиши "вверх-вниз" не функционируют
Как можно их оживить?
Вот код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' &#226;&#251;&#226;&#238;&#228;
On Error Resume Next
Dim cell As Range: Set cell = Target.EntireRow.Cells(2)
If cell.Hyperlinks.Count > 0 Then
PicPath = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, cell.Hyperlinks(1).Address)
If Dir(PicPath) <> "" Then
With F
.Picture = LoadPicture(PicPath)
.Width = F.Picture.Width / 33: .Height = F.Picture.Height / 33
.Top = Application.Top + 24
.Left = Application.Width + Application.Left - .Width - 18
.Caption = cell.Previous: .Show


End With
End If
Else
Unload F
End If
End Sub

"В" здесь гиперссылка на фото
выдели любую ячейку из этой строки, фото меняется
Автор: ZlydenGL
Дата сообщения: 08.07.2009 12:57
maratino, за Mont1 не отвечаю, но я вообще-то парень

Стрелки "вверх-вниз-и-другие стороны" тебе для навигации по листу нужны? Тогда перед End Sub сделай Target.Activate Объект картинки при этом фокус потеряет, а лист наоборот, получит (и соответственно управление вернется).

Удачи!
Автор: maratino
Дата сообщения: 09.07.2009 10:43
ZlydenGL

Не получается. Может я не так делаю?
Автор: ZlydenGL
Дата сообщения: 09.07.2009 11:17
maratino, попробуй кроме Target.Activate сделать Thisworkbook.ActiveSheet.Activate Или просто кинь мне на мыло (в профиле) книжку - гляну на своей машинке
Автор: Lovec
Дата сообщения: 09.07.2009 11:54
All
Подскажите плиз как развернуть окно... Не часто программирую, наверно поэтому поиск по инету в течении 2-х часов дал только полурезультат. Научился посылать окну приказ закрыться
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_CLOSE = &H10
PostMessage oIE.hwnd, WM_CLOSE, 0, 0

А вот как максимизировать - не понял ...

Подскажите, плиз
Автор: ZlydenGL
Дата сообщения: 09.07.2009 12:15
Lovec, вот это подойдет?

Добавлено:
Ну или так


Код: 'API Declarations
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal _
hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_MAXIMIZE = 3

'the code to find and maximize a notepad window
Dim WinHandle As Long
WinHandle = FindWindow("Notepad", vbNullString)
ShowWindow WinHandle, SW_MAXIMIZE
Автор: maratino
Дата сообщения: 09.07.2009 15:59
ZlydenGL
http://files.mail.ru/ZBDR1R
http://files.mail.ru/ZBDR1R?t=1 фотки
создайте папку img и фотки туда
папка с фото и xls должны находится в одном месте
Автор: ZlydenGL
Дата сообщения: 09.07.2009 16:01
maratino, можешь куда-нить еще выложить? Уже минуту крутится "Действия" - "ждите..."

Добавлено:
... или уже из дома скачаю и заценю

Добавлено:
Скачал. Сразу вопрос - а какой тип предполагается у переменной F? У меня она даже после выполнения инструкций With осталась Empty (и естественно никакая картинка не подгрузилась).
Автор: maratino
Дата сообщения: 10.07.2009 10:22
ZlydenGL
я професионально не отвечу. но предполагаю, что это форма, куда и фото загружается
сейчас скриншот вышлю
Отправил от имени maratino@narod.ru
Автор: ZlydenGL
Дата сообщения: 10.07.2009 11:40
maratino, ну тогда все ясно. Во-первых, ты форму наверняка модально вызываешь, а во-вторых, если форма проекта перехватывает контроль на себя - вернуть контроль листу можно либо щелкнув по листу, либо выгрузив форму.

Поэтому лучше создай на листе объект Picture и грузи изображение в него А если изображения нет - вешай ему нулевой размер (или вообще скрывай нафиг).
Автор: urodec
Дата сообщения: 30.07.2009 11:38
Всем привет, помогите, пожалуйста, решить сл. задачу
Необходимо создать контейнер, который смог бы получать любой объект и возвращать его. Контейнер должен жить все время, доступ к данным должен быть быстрым
Автор: LostCost
Дата сообщения: 11.09.2009 21:54
Здравствуйте всем. У меня есть вобщем то самый что не на есть простой и банальный вопрос, но с учетом того что 2 недели как начал основательно заниматься бейсиком(считая мат. часть) я думаю это простительно.
Вобщем, моя задача сделать боее менее работающий многострочный калкулятор. Пока что имеется вот это:
[more=Код]Public Class Form1

Dim a, b, oper As Double


Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text)
End Sub

Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
TextBox3.Text = Val(TextBox1.Text) - Val(TextBox2.Text)
End Sub

Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
TextBox3.Text = Val(TextBox1.Text) * Val(TextBox2.Text)
End Sub

Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
TextBox3.Text = Val(TextBox1.Text) / Val(TextBox2.Text)
If TextBox2.Text = 0 Then
TextBox3.Text = "Невозможно"
Label1.Text = "На ноль делить нельзя!"
Else : Label1.Text = ""
End If
End Sub

Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click

End Sub

Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
TextBox3.Text = Math.Sin(Val(TextBox1.Text))
End Sub

Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
TextBox3.Text = Math.Cos(Val(TextBox1.Text))
End Sub

Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click
TextBox3.Text = Math.Sqrt(Val(TextBox1.Text))

End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

End Sub

Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
TextBox3.Text = Val(TextBox1.Text) ^ 2
End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = "0" Then
TextBox1.Text = "1"
Else
TextBox1.Text = TextBox1.Text + "1"
End If
If oper = "" Then
a = TextBox1.Text
Else
b = TextBox1.Text
End If
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

End Sub

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

End Sub
End Class
[/more]
Сделано вроде бы все что нужно, но я не могу никак разобраться с кнопками "1", "2" и т.п. и знак равенства("="). Вот код "1":
Код: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = "0" Then
TextBox1.Text = "1"
Else
TextBox1.Text = TextBox1.Text + "1"
End If
If oper = "" Then
a = TextBox1.Text
Else
b = TextBox1.Text
End If
End Sub
Автор: Legio
Дата сообщения: 13.09.2009 15:13
А это ничего, что oper объявлен как Double, а в условии проверка вся из себя "строковая"?
Но вообще -- категорически не понятно, чего же собственно вам надо от кода.
Автор: LostCost
Дата сообщения: 13.09.2009 19:43
Все все.. доделал. сглупил с опером) все, его доделал.
Автор: zerkalo77
Дата сообщения: 06.10.2009 11:38
Господа, а возможно ли средствами Visual Basic отключить звук (или добиться регулировки громкости)?

Добавлено: Нашел сам. Может кому пригодится.


Код:
Private Declare Function waveOutSetVolume Lib "Winmm" (ByVal wDeviceID As Integer, ByVal dwVolume As Long) As Integer
Private Declare Function waveOutGetVolume Lib "Winmm" (ByVal wDeviceID As Integer, ByVal dwVolume As Long) As Integer
Dim a As Long

private sub выключение()
a = waveOutSetVolume(0, 0)
end sub

private sub включение()
a = waveOutSetVolume(0, &HFFFF)
end sub
Автор: B16
Дата сообщения: 07.10.2009 12:00
Задача проста до ужаса, я бы сделал но забыл как брать данные из inputbox'a
Вот текст задачи:
В приложении вводится день, месяц и год рождения, в результате работы они выводятся в соответствующих отдельных окнах(ввод выполнить при помощи inputbox'a)
Вот такой код программы(это я набросал):
Private Sub Command1_Click()
Dim pass As Integer
Dim D As Integer
Dim M As Integer
Dim G As Integer
pass = Val(InputBox("Введите день, месяц и год вашего рождения", "ДМГ"))
D = Label1.Caption
M = Label2.Caption
G = Label3.Caption
End Sub


Теперь нужно из инпут бокса взять введённые данные и вывести в лейблы. Лейблы то я сделал. Но как из него взять данные....на практике мы проходили но по тем задачам я так и не понял как из него происходит выборка.

[more=Вот скрин "программы"] [/more]
Автор: Alex_Kanahin
Дата сообщения: 07.10.2009 12:59
B16
, выборку надо делать не из него а из переменной "pass", различными строковыми функиями. Помоему в VB InStr - функция ищет строку в другой строке. При помощи ее ищи первое вхождение знака "." - все что до этого знака есть день, ну а дальше по той же технологии.
Автор: B16
Дата сообщения: 07.10.2009 13:03
Alex_Kanahin можно поподробнее?
Это D,M,G присвоить переменную стринг?
Автор: 5555555
Дата сообщения: 07.10.2009 14:05
Небольшое отклонение, но вроде темы больше нет.

Кто как чем делает дистрибутивы? Хорошо если пара компонентов, а если штук 40?
Странно уже наверное никто и не юзает VB (по крайней мере которые не нет), а с дистрибутивами как лажа была, так и канула в лету..
Мне-то vb до сих пор помогает небольшие полезные утилитки делать - быстро и просто. но вот с дистриб - просто беда

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

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


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