История развития программирования, программирование, языки программирования, книги программирование На сайте представлена информация про программирование в Интернете и работу  

History recovery, Excel
Работа с MulticastSocket
нужны тесты использования any Map и List классов, скорость (!) Map-ов и List-ов
Разница между ScaleTop и Top
Посылка писем из ACCESS, автоматизация посылки писем по Mail
Как в ACCESS сделать exe файл
Как в Excel макрос, к-рый бы проверял знач. ячеек, При появл. в ячейке опред.числ-изменить
Свой пункт меню.., Excel...
Как Вы относитесь к курящим девушкам?
Функция поиска в строке, по маске
Сетевое ПО
Excel script
Разнообразные объекты, Не могу найти нужную ф-цию
Что надо для запуска приложения?
проблема с запуском Query
найти на диске файл (.ini .txt) и добавить текст, Точнее в system.ini
кто шарит в VC6++ и 1С, использование интерфейса
о массивах, -
Как из 256 цв. палитры получить RGB?, и стандартная ли она вообще?
VBA Access XP, ListBox value
Номер на каждой копии в Excel, нумерация этикеток
Ole Excel
Оч. простой вопрос по VB, Может я торможу???
Как обратиться к Internet Explorer?
Посылка сообщений
Как узнать где указатель?, API
Залитые полигоны..., без API!
Windows Service на VB, Что надо сделать с прогой чтобы она...
Замучался с datagrid...
как так сделать ?
синхронный запуск приложения
Свернуть окна, Как свернуть все окна на ХР
видео захват по 1394
По поводу Winsock, поиск информации по Winsock
Печать HTML-документа
зачем нужен вызов Class.forName
Помогите начинающему..., Для незнающих Basic.
Много сокетов надо сделать!
OLE, связь с MS SQL Server
Сохранение записей, Работа с СУБД
Retern to mouse
Проблема с прменением msoFileDialogSaveAs, Отрытие окна Saveas
Как открыть файл, на диске
Как организовать воиск в Ёкселе через VBA с формир
Макрос автоматического скрытия столбцов в Excel
Картинки в DLL, Dll
Реализация структуры
Изменение размера рисунка из Access, программно
Метод Controls.Add, Ошибкка в FormControls.Add
Пустое поле типа дата, как обработать Пустое поле типа дата
transactions в ADO, пересылка данных между машинами
Отмена или приоритеты
COM Port, Использование COM Port'a
Как Вы относитесь к курящим девушкам?
Phone, Программа "телефон"
Помогите с random в VB, генератор случайных чисел
Внешний Device!!!, Работа с железом.
Инсталяция прог написанных на Java, Как создать
Как придумать название для своего приложения..., ...чтобы, не повтор. существ.название?
Сообщение WM_QUERYENDSESSION, Как перехватить сообщение Windows
Как из VBScript выводить на консоль?, просто Print "aaa" не срабатывает
VB для Excel, Сам незнаю как сделать
Скрыть программу...
HELP !!!!, Проиграть файл в тел. линию
ПРОСТОЙ ВОПРОС, ОЛИМПИАДА ЧЕРЗ 3 ДНЯ!!!
калькулятор:(
Нужен компонент
2 string = 1 переменная, как это сделать
XML файлы
смена картинки

Платные хостинги     Раскрутка сайта     Книги по программированию


VB для Excel, Сам незнаю как сделать

Только здесь 1000 посетителей на Ваш сайт всего за 3 у.е.!

- Люди есть такой вопрос. Если он даже без ответа не останется, может появяться еще... Я заинтриговал? Нет? Ну кароче , кому как, Может кто-то хочет развлечься, и помочь мне ламеру.Я VB почти не владею, бывает пишу простенькие макросы, т.е. у меня все к этом и сводиться. ЧТобы так сказать облегчить себе работу с Excel. Так вот давно бьюсь надо проблемой, хотя наверно для вас это не проблема, но для меня это просто бревно на скоростной дороге. И даже не одно бревно. Я наверно всех уже утомил, и вы думаете, где собствено вопрос. А вот и он:У меня есть Excel документ с 54 листами, 49 из которых практически идентичны. На первом листе(он не в ходит в 49), находиться вся информация, это разбитый но зоны лист(естествено только визуально).Т.е. A1:D10 одна зона E1:I10 Другая, в этих зонах находиться информация, какая это не есть важность. Важно вот что, эта информация из каждой зоны, а их 49, копируется в листы, а на листах просто оформление, этой информации, менять ничего нельзя, т.е. данная структура должна остаться. Нужен макрос который будет искать в 49 листах число(я забыл сказать , что искать надо только число, или как у меня называется это НОМЕР), не забывайте , что на 49 листах просто ссылки. Надо найти и остаться на этом листе на этой ячейке.Теперь пояснения , как делал я, выделял все 49 листов искал в значениях, но было 2 проблемы, когда это был макрос, искать он останавливался на первом листе(хотя просто поиском все искалось), и вторая, оставалось выделение на всех листах, и информация, которую я добавляю вставлялась во все листы. Вы естествено спросите а почему бы не снять выделение? А я тут же и отвечу. Потому что листов ооочень много, и они не умещаются все на экран. А чтобы его снять, надо ткнуть на не выделеный лист, на который сразу Excel и передет, но мне так не надо.ТЕперь собтвенно что должен делать макрос(для начала): Он должен выдавать окно , в которое я буду писать номер, и жать ok. И произойдет переход на тот лист в котором этот номер, если при этом еще и на самом номере будет стоять курсор, я буду очень рад, а если он будет стоять , на ячейку правее, просто прыгать от радости, что поверьте мне очень смешно. Сам очень смутно это представляю.За сим хочу откланяться... Жду отзывов, и вопросов, если они будут...

- Вопрос первый : Ты не баишся что у Excel-я башню сорвет в неподходящий момент?54 листа в книге ??!!! эта круто.Как-то помню главбух меня все доставала с такой ерундой . Они баланс делали в Excel. Там такая же хрень была ,но только там надо было редактировать ссылки на каждом листе. Там было листов 20 и 6 связанных книг.А по твоему вопросу я думаю что наверно так:Сделай форму воткни на нее поле и кнопку.Поле будет служить шаблоном для поиска, а при нажатии на кнопку работает циклКод While n<> Sheets.Count' n - у тебя зависит с какого листа начинатьSheets(n).Select    Cells.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlValues, LookAt:= _    xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _     , SearchFormat:=False).Activate If ActiveCell = TextBox1.Text Then MsgBox "Образец найден" n=n+1WendhighlightSyntax('vbTQyOWE','vb');Ну вот так наверное, да и в свойствах формы ShowModal поствавь False. Так будет удобней работать с формой , она не будет блокировать доступ к самому листу книги

- Нууу, то что листов много, так это просто специфика, там маршрутные листы, сколько маршрутов , столько и листов. Кнопка мне в общем не нужна, т.к. первый лист оочень большой. Мне бы комбинацию клавиш на макрос, но это я и сам могу. Важен сам макрос. Твой не работает. По причине того что листы называются не 1 , 2, 3, а B00 B01 M34 и т.п. Я попробовал немного переделать, хотя куда мне.Код Dim se, sase = InputBox(sa)    Sheets(Array("В0", "В1", "В2", "В3", "В4", "В5", "В6", "В7", "В8","В9", "В10", "В11", _        "В12", "В13", "В14", "В15", "В16", "В17", "В18", "В19", "В20","В21", "В22", "В23", "В24", _"М25", "М26", "М27", "М28", "М29", "В30", "В31", "В32", "В33", "В34","B35", _        "B36", "B37", "B38", "B39", "B40", "B41", "B42", "B43", "B44","B45", "B46", "B47", "B48", _        "B49")).Select   Cells.Find(What:=se, After:=ActiveCell, LookIn:=xlValues, LookAt:= _   xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext,MatchCase:=False).ActivatehighlightSyntax('vb3NTllNm','vb'); Вот это как и было у меня раньше, останавливается на 1м листе.Код Dim se, s(50) As String, ns(1) = "B1": s(2) = "B2"s(3) = "B3": s(4) = "B4"s(5) = "B5": s(6) = "B6"s(7) = "B7": s(8) = "B8"s(9) = "B9": s(10) = "B10"n = 1While n <> Sheets.Count ' n - у тебя зависит с какого листа начинатьse = s(n)Sheets(se).Select'Ошибка вот тут ^^^^^   Cells.Find(What:=TextBox1.Text, After:=ActiveCell, LookIn:=xlValues,LookAt:= _   xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext,MatchCase:=False).ActivateIf ActiveCell = TextBox1.Text Then MsgBox "Образец найден"n = n + 1WendhighlightSyntax('vbiZjczN2J','vb'); а вот это пишет Subscript out of range (Error 9), видать я что-то не так сделал. Еще раз скажу в чем идея, идея в том, чтобы при нажатии быстрой клавиши, выскакивало окошко. В которое я вводил номер, и нащимак ok. И оказывался на этом номере, не на первом листе, а на листе того маршрута, в котором этот номер.

- Привет во первых!К листу можно обращатся как по имени так и по индексу !"допустим n - у нас принимает значение 1Sheets(n).Select ' это выделение листа №1Sheets("Лист1").Select ' это уже обращаемся к листу по имениА если у тебя был багг в самом начале цикла то это потому , что нет листа с индексом =0 т.е.Sheets(0).Select -это ошибка И еще ! Когда обращаемся к листу по индексу переменная должна быть типа Intejer

- Код Dim number As IntejerDim ss As Stringss = TextBox1.Text ' поле для шаблона поискаNumber = 1Application.FindFormat.NumberFormat = "@" ' текстовый форматFor Number = 1 To Sheets.Count ' n - у тебя зависит с какого листа начинатьSheets(Number).SelectCells.Find(What:=ss, After:=ActiveCell, LookIn:=xlFormulas, _        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _        MatchCase:=False).Activate     If ActiveCell = TextBox1.Text Then MsgBox "Образец найден": Exit ForNexthighlightSyntax('vblMDgyN','vb');Ну вот так у меня ищет все !

- Да это я там намудрил и тебе голову заморочил с циклом WHILE WEND . Сам не проверял некагдо было , извени.

- ДА я как раз извеняться пришел... =)))

- Если ты скопировал из vb, мне не понятно как у тебя ищется. Т.к. у меня VB в Excel незнает такого типа Intejer, на integer все нормально стало. Вот код, там я написал где ошибка всегда вылезает.Object variable or With block variable not set (Error 91)Код Dim number As IntegerDim ss As String, sa As Stringss = InputBox(sa) number = 1Application.FindFormat.NumberFormat = "@" For number = 5 To Sheets.Count 'Sheets(number).Select'===================Cells.Find(What:=ss, After:=ActiveCell, LookIn:=xlFormulas, _       LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _       MatchCase:=False).Activate' вот тут всегда ошибка...'====================    If ActiveCell = ss Then MsgBox "good": Exit ForNexthighlightSyntax('vbk3MzA0','vb');

- Да у меня что-то в последнее время тяжко с вниманием , но на то есть свои глобальные причины.Конечно нет "Intejer" , а есть "Integer" просто переменные я втыкал тут , а код уже забирал с VBA.Но я опрбывал на книге из 10 листов на кажном листу в среднем 10000 записей , ищет без затыковНу тогда вот так - это по медленней , но зато железобетонно !!!Если не хочешь видеть мильтишение то разремарь Application.ScreenUpdating = FalseКод Private Sub CommandButton1_Click()Dim number As IntegerDim ss As String, sa As Stringss = InputBox(sa)number = 1'Application.ScreenUpdating = False 'Запрет на обновление т.е. мильтишение экрана во время обр.For number = 1 To Sheets.Count 'Sheets(number).Select    For columpsearsh = 1 To Sheets(number).Cells.SpecialCells(xlLastCell).Column         For rowsearsh = 1 To Sheets(number).Cells.SpecialCells(xlLastCell).Row               Cells(rowsearsh, columpsearsh).Select            If ActiveCell = ss Then MsgBox "good": Exit For         Next    If ActiveCell = ss Then Exit For   Next If ActiveCell = ss Then Exit For  Next'Application.ScreenUpdating = True 'Разрешение на обновление после выполнения End SubhighlightSyntax('vbTYyODE','vb');

- Да еще если после удачного поиска тебе надо что-бы ячейка была правее , тогда просто к найденой ячейке мы прибавляем один столбец. : Cells(rowsearsh, columpsearsh).Select ' Это найденная ячейка Cells(rowsearsh, columpsearsh+1).Select ' это сдвиг в право на одну значит это ты должен воткнуть после условия удачного поиска т.е. вот сюда : If ActiveCell = ss Then MsgBox "good":Cells(rowsearsh, columpsearsh+1).Select: Exit ForНу наверно все !!! )) Удачи !

- 2 alles : скажи мне почему он так не искал, т.е. макрос записываешь, ищет, проигрываешь(ничего не меняя), он ошибку выдает.. Так было на всех компах где я проверял.

- Не тут то было =)) , все заработало, сегодня буду проверять.Есть 2 маленьких вопроса.1. У меня есть макрос который ставит дату. вот такой ct = Timecd = DateRange("A1").SelectIf ct > 0 Then ActiveCell.FormulaR1C1 = cdElse ActiveCell.FormulaR1C1 = cd + 1End IfОн должен ставить дату, до 0 следующего дня, а после 0 текущего. Т.е. я могу и руками это делать, но это часть большего макроса. Так вот, дату он ставит не верно, я просто незнаю, как указать время ТОЧНО.2. В макрос который ты предложил, по поиску, надо усовершенствовать, типа должна быть форма с номером, и еще 2мя числами, и они должны забиваться в 2 и 3 ячейки правее. Это обещеное еще в самом начале продолжение. Заранеее очень спасибо... Ты мне уже помог очень...

- Берем форму , втыкаем на нее три TexBox-а и одну кнопку.TexBox1 - Поле для ввода строки поиска ( но можно оставить и инпут , но если ты уже работаешь с формой зачем отвлекатся на дополнительный вылет)TexBox2 и TexBox3 - Поле для ввода строк в ячейки которые находятся правее найденойи так получаем :Код Private Sub CommandButton1_Click()Dim number As IntegerDim ss As String, sa As Stringss = TexBox1.Text    'InputBox(sa)number = 1'Application.ScreenUpdating = False 'Запрет на обновление т.е. мильтишение экрана во время обр.For number = 1 To Sheets.Count 'Sheets(number).Select   For columpsearsh = 1 To Sheets(number).Cells.SpecialCells(xlLastCell).Column        For rowsearsh = 1 To Sheets(number).Cells.SpecialCells(xlLastCell).Row              Cells(rowsearsh, columpsearsh).Select  If ActiveCell = ss Then MsgBox "good":Cells(rowsearsh, columpsearsh+1)= TextBox2.Text:Cells(rowsearsh, columpsearsh+2)= TextBox3.Text:Cells(rowsearsh, columpsearsh+1).Select: Exit For        Next   If ActiveCell = ss Then Exit For  NextIf ActiveCell = ss Then Exit For Next'Application.ScreenUpdating = True 'Разрешение на обновление после выполнения End SubhighlightSyntax('vbwZmVlZ','vb');A вот во втором вопросе по датам и времени , если ты работаешь с реальным временем, т.е. переменная у тебя принимает реальное время ( а у тебя это имеено так ct = Time ) Тогда можно просто принять во внимание , что стандарт времени состоит из от нуля часов 0:00:00 . Тогда ищем первое вхождение символа ":" и если у нас это символ находится на второй позиции !!! тогда время у нас будет только нового дня. Получаем : Код ct = Timecd = DateRange("A1").SelectIf [B]InStr(1, Time, ":", 1) = 2[/B] ThenActiveCell.FormulaR1C1 = cdElseActiveCell.FormulaR1C1 = cd + 1End IfhighlightSyntax('vbViZjg5M','vb');Может есть способ и по оригинальней , пусть меня поправят , но так тоже должно работать !Давай пробуй !! )

- Ну блин ... InStr(1, Time, ":", 1) = 2 только без вот этих и и просто хотел выделить .Эти знаки выкини с кода.Код ct = Timecd = DateRange("A1").SelectIf InStr(1, Time, ":", 1) = 2 ThenActiveCell.FormulaR1C1 = cdElseActiveCell.FormulaR1C1 = cd + 1End IfhighlightSyntax('vb3NzE4Y','vb');Вот так ! )

- ) Ну и апять касяк ... )) ну я думаю ты все понял и так ) Парюсь я в этих тегах..... будь они неладны .. ))

Интернет казино     Онлайн игры     Увеличение члена     Купить DVD


Главная страница | история развития программирования | компьютеры программирование | lg программирование | задачи квадратичного программирования | winapi программирование | программирование x | программирование djvu | программирование visual foxpro | wap программирования | xp программирование | классы программирование | программирование motorola | графы программирование | программирование атс panasonic | языки программирования развитие | линейное программирование лекции | фортран программирования | программирование драйверов windows | tcp программирование | программирование qbasic | программирование проблемы | примеры задач линейного программирования | параметрическое программирование | дельфи программирование | программирование мыши | Ссылки

Все про классы программирование