80

Тут говорят!
Авторизация
Список форумов
Войти через акаунт
 

VBA
Подписаться/отписаться на тему (функция доступна только для зарегистрированных пользователей) Любимая тема (вкл/выкл) []

Страницы: 1  2   из  2
Добавление сообщений к этой теме для незарегистрированных пользователей невозможно
Тему смотрит 1 незарегистрированный пользователь
Модераторы
Рейтинг темы:   (1820 просмотров)
Вы не можете создавать новые темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
 

Chertilo Chertilo в оффлайне

завсегдатай
Сообщений: 210

Chertilo на старте

ПОМОГИТЕ!!!!!!!!!!!!!!!! Что тут не так??? Function Result(ByVal str As String) As Integer Dim ind As Integer Do While str(ind) = ":" ind = ind + 1 Loop Result = indEnd Function
 

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

хм .... скажи а что ты хочешь такой функцией делать ?
мот я алгоритм тебе напишу

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

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

что за цикл ) да и ещё ByVal передаётся и не используется в функции... зачем тогда передавать? )

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

Sinner Sinner в оффлайне

писатель
Сообщений: 1 251

Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный

этот метод просто подсчитвает кол-во символов ":" в строке, ссылка на которую передана в него. Собственно ошибка рантайм из-за того что ind выходит за пределы допустимого диапозона (т.е. становится не меньше длины строки). Нужно проверять со свойством Length строки, либо заменить Do-while на for

--------------------
Can You Handle Life?
 

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

а зачем тогда While ? тут цикл нужен For ) от 1 до длинны строки
типа так for a=1 to len(ByVal)
а в теле цикла уже пишеш типа
if ByVal(a) = ":" then ind = ind + 1 (не помню точно синтаксис в VBA еси что исправь)

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

Sinner Sinner в оффлайне

писатель
Сообщений: 1 251

Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный Sinner популярный

только не ByVal(a), а str(a) .ByVal означает что параметр str передается по значению. (а может передаваться и по ссылке ByRef, например. В данном случае это не важно)

--------------------
Can You Handle Life?
 
 

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

Sinner (10.11.06 17:45) писал(a):
только не ByVal(a), а str(a) .

а ну да! точно !) не заметил))

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

Chertilo Chertilo в оффлайне

завсегдатай
Сообщений: 210

Chertilo на старте

Ogonek (10.11.06 17:10) писал(a):
хм .... скажи а что ты хочешь такой функцией делать ?мот я алгоритм тебе напишу

Короче! В функцию передаем строку “3:2” (это исход игры), а получаем разницу игры, в данном случае 1 (3-2=1), получаемый тип Integer.Надо учесть что исход может быть и "234:789"
 

Chertilo Chertilo в оффлайне

завсегдатай
Сообщений: 210

Chertilo на старте

Sinner (10.11.06 17:34) писал(a):
этот метод просто подсчитвает кол-во символов ":" в строке, ссылка на которую передана в него. Собственно ошибка рантайм из-за того что ind выходит за пределы допустимого диапозона (т.е. становится не меньше длины строки). Нужно проверять со свойством Length строки, либо заменить Do-while на for

Данный вариант это маленькая версия всей функции!Я с Length и делал, а for тут не подайдет(((((
 

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

Кароче вот тебе прога Function Result(ByVal str As String) As IntegerDim ind, n, a, b As Integern = InStr(1, str, ":")a = VBA.Left(str, n - 1)b = VBA.Right(str, Len(str) - n)ind = a - bResult = indEnd Functionвсё просто - сначала находим позицию двоеточия, потом получаем в а первое число (всё о скобок) а в b- второе (всё после скобок)... и возвращаем разницу между ними )) ну тока проверку на тупой ввод допиши ещё))

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

Chertilo Chertilo в оффлайне

завсегдатай
Сообщений: 210

Chertilo на старте

Ogonek (11.11.06 14:55) писал(a):
всё просто - сначала находим позицию двоеточия, потом получаем в а первое число (всё о скобок) а в b- второе (всё после скобок)... и возвращаем разницу между ними )) ну тока проверку на тупой ввод допиши ещё))

Сенк ю))) А то я VBA забыл, а вспоминать так влом))))
 

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

завтра сдаю курсач)) вот маленькая проблемка... типа экпорт с эксэля в ворд ...я какбы создаю программно таблицу в ворде:With objDoc .Tables.Add Range:=objWord.Selection.Range, _NumRows:=7, NumColumns:=3End WithКТО ЗНАЕТ КАК ЗАДАТЬ ШИРИНУ СТОЛБЦОВ?

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

alexey_public alexey_public в оффлайне

графоман
Сообщений: 5 817

alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный

Ну так а макросы на что - меняй руками и смотри код

--------------------
Алексей
 

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

лан ... итак впарил курсач на 5 баллов .... из 10 возможных но для курсача, написаного за пол ночи это нормально

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

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

ненавижу vba дали б курсачи на ассемблере я б забожил

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

Jack_A Jack_A в оффлайне

новичок
Сообщений: 86

Jack_A на старте

Даже книжку специальную купил, прочел насквозь , но так и не просек, как из VBA адресовать ячейки Екселя : книга - лист -строка - столбец. Плохо читал ?
 

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

2 Jack_A а так попробуй: workbook.лист1.cells(1,1)

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

dark_user dark_user в оффлайне

новичок
Сообщений: 82

dark_user на старте

А хде е-книги по энтому VBA на русском качать нормальные?
 

Jack_A Jack_A в оффлайне

новичок
Сообщений: 86

Jack_A на старте

Ogonek (29.01.07 16:45) писал(a):
2 Jack_A а так попробуй: workbook.лист1.cells(1,1)

Попробовал. Работает !Но вот как применить конкретно к Екселю - что-то туго соображалка идет. Допустим, ввожу в ячейку десятичное число и хочу, чтобы оно преобразовалось макросом в 16-ричный формат. Сам код написать несложно, но может ли результат быть записан в ту же ячейку ? Или в другую - но надо макросу указать адрес ячейки, вроде как параметр подпрограммы ... Не представляю
 

Ogonek Ogonek в оффлайне

графоман
Сообщений: 2 602

Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный Ogonek популярный

Jack_A (13.02.07 07:40) писал(a):
Попробовал. Работает !Но вот как применить конкретно к Екселю - что-то туго соображалка идет. Допустим, ввожу в ячейку десятичное число и хочу, чтобы оно преобразовалось макросом в 16-ричный формат. Сам код написать несложно, но может ли результат быть записан в ту же ячейку ? Или в другую - но надо макросу указать адрес ячейки, вроде как параметр подпрограммы ... Не представляю

ну например так - у подпрограммы 2 входных параметра (координаты исходной ячейки напр x и y )берёшь тогда свой число с него в подпрограмме workbook.лист1.cells(x,y) , производишь над ним вычисления и туда же результат пишеш ... можно поподробнее что имеенно не получается?

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

Jack_A Jack_A в оффлайне

новичок
Сообщений: 86

Jack_A на старте

Ogonek (13.02.07 12:47) писал(a):
можно поподробнее что имеенно не получается?

Все непонятно. Вот в обычном Excel записываю в ячейку формулу, и понажатии Enter она вычисляется. Хотелось бы такое же для нестандартных действий,которые невозможно выполнить штатными средствами Excel. Поэтому хочется такого:записали макрос на VBA, выбрали какую-нить ячейку и каким-то способом вызвалиэтот макрос. Макросу должен сам определить координаты выбранной ячейки и вкакую ячейку относительно выбранной занести результат.Возьмем совсем простой пример : берется содержимое текущей ячейки,умножается на 2, и результат идет в : [соседний справа столбец,соседняя снизустрока].Is it possible ?А если в выбранной ячейке нечисловое значение?Читаю книжку - все понятно, как решить вопросы, мне не нужные, и ничего - какрешить нужные (
 

alexey_public alexey_public в оффлайне

графоман
Сообщений: 5 817

alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный

ИМХО тебе нудно тогда читать про OLE и VB в чистом виде.Все что ты написал - решаемо.Я таким постоянно занимаюсь - но из Delphi по OLE.Кстати - текущая ячейка - находится в Selection

--------------------
Алексей
 

alexey_public alexey_public в оффлайне

графоман
Сообщений: 5 817

alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный

А формат ячейки - он определяем - можно точно узнать число там или нет.

--------------------
Алексей
 

Jack_A Jack_A в оффлайне

новичок
Сообщений: 86

Jack_A на старте

alexey_public (19.02.07 10:06) писал(a):
ИМХО тебе нудно тогда читать про OLE и VB в чистом виде.
Все что ты написал - решаемо.
Я таким постоянно занимаюсь - но из Delphi по OLE.
Кстати - текущая ячейка - находится в Selection

"Плохо, когда не знаешь, да еще и забудешь!" (С) мой бывший шеф

Не то, что нудно, а как-то соображалка хуже работает, чем в молодости. OLE, пожалуй, это уже чересчур
для моих не совсем новых мозгов. А насчет Selection - если не трудно, кусочек кода -
определить текущую выбранную ячейку. А уж тогда я над ней поизвращаюсь.
Насчет Дельфи - понемногу поддается. Но иногда именно в Екселе нужно сделать что-нить нестандартное,
тогда VBA рулит по идее.
" Большому кораблю - и карты в руки "
 

alexey_public alexey_public в оффлайне

графоман
Сообщений: 5 817

alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный

Вот тебе записанный макрос самим excel-em:Sub Ìàêðîñ1()'' Ìàêðîñ1 Ìàêðîñ'' Range("D3:F3").Select Selection.NumberFormat = "0.00" Range("D5:F5").Select Selection.NumberFormat = "@" Range("A1").SelectEnd SubВыделяю первый диапазон и ставлю формат ячеек - численный.Второй диапазон выделяю и ставлю формат - строковый.И потом иду в первую ячейку.

--------------------
Алексей
 

Jack_A Jack_A в оффлайне

новичок
Сообщений: 86

Jack_A на старте

alexey_public (22.02.07 11:27) писал(a):
Вот тебе записанный макрос самим excel-em:Sub Ìàêðîñ1()'' Ìàêðîñ1 Ìàêðîñ'' Range("D3:F3").Select Selection.NumberFormat = "0.00" Range("D5:F5").Select Selection.NumberFormat = "@" Range("A1").SelectEnd SubВыделяю первый диапазон и ставлю формат ячеек - численный.Второй диапазон выделяю и ставлю формат - строковый.И потом иду в первую ячейку.

Сенкс. Буду пробовать. А что в начале : Sub Ì&#224 ... - не понял. Почему-то кириллицу переводит в код ?
 

alexey_public alexey_public в оффлайне

графоман
Сообщений: 5 817

alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный

Ууг - почему-то, я сам удивился когда такое увидел

--------------------
Алексей
 

Jack_A Jack_A в оффлайне

новичок
Сообщений: 86

Jack_A на старте

Наерное, я все-таки тупой.
Вот хочу сварганить простейший макрос. Назначаю ему сочетние клавиш , и чтобы при выбрнной ячейке и нажатом сочетании клавиш в фиксированных ячейках, например, А5,А6 выводились бы номера строки и столбца выбрнной ячейки. Вхожу : СЕРВИС / МАКРОС/Редактор Viual Basic/Эта книга - получааю пустышку подпрограммы с Sub - End. Теперь думаю : как сюда дать понять этой функции, какая ячейка яляется выбранной. И второй вопрос : когда закончил ввод кода, как записать этот матрос и ыйти из VBA
PS В случае отсутствия в этом посте литер А , В, Ч и др. прошу ситать их присутстующими, бо клава глючит, а другой нет - это на работе
 

alexey_public alexey_public в оффлайне

графоман
Сообщений: 5 817

alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный alexey_public популярный

Selection или ActiveCell - это твоя текущая ячейка(или несколько)A5 надо присвоить например левую границу selection A6 - нижнюю.Выйти- а по-моему просто закрыть Но там есть и Save и кнопочка Excel.Создавать макрос лучше по-другому - как обычно - нчать запись. Там же и сочетания клавиш задавать.

--------------------
Алексей
 

Jack_A Jack_A в оффлайне

новичок
Сообщений: 86

Jack_A на старте

Поднимем тему.Вот, накропал простенький матрос. Работает, но в ячейке A1 выдает ХЗ что.Странно.И еще : из int в hex преобразовать есть специальная функция HEX, а если надонаоборот ? Посимвольно из строки вручную ? Вот в С просто :sscanf (str,"%X",&i ) - и всего делов.http://foto.mail.ru/inbox/ga_ev/1/i-13.jpg
Страницы: 1  2   из  2
 
Быстрый переход
[]
Вверх
HOSTER.BY: профессиональный хостинг и регистрация доменов .BY
Более 35000 сайтов выбрали нас. Присоединяйтесь!
 
РЕСУРСЫ ПОРТАЛА
   Все ресурсы