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

» Excel VBA (часть 2)

Автор: q1wed
Дата сообщения: 27.10.2008 16:04

Цитата:
фиксировать ячейки используя формат " & variable & "
это как? в смысле?
Автор: MaximuS G
Дата сообщения: 27.10.2008 16:15
q1wed
Ну если я вставляю например переменную значением (С)5, потом копирую ячейку вниз, то она изменяеться на (С)6, ну общий формат формул, а когда я ставлю " $ " в екселе, то фиксирую значение... тогда в код он записует абсолюную ссылку без R[1]C[1]...
А Вы под что вообще программируете по профилю ?
А еще добавлю... Как запустить ту надстройку, которую Вы дали сверху ?
Автор: q1wed
Дата сообщения: 27.10.2008 18:15
Уважаемый MaximuS G, я - любитель. Никогда ни на чем не кодил. Люблю поломать мозг, Excel и судоку. Знания черпаю из Справки, И-нета и Старенькой книжечки по Экселю. Отвечая здесь, я не беру готовые решения из головы - а ищу используя выше указанные источники - типа развиваюсь. Надстройки не открывал и не скачивал, а взял их из этой шапки. В свое время делал формулу (без макросов) по которой определялось в каком эээ.. склонении должно быть слово (1 день, 2 дня, 11 дней и тд) с тех пор как то не интересно. По поводу твоего вопроса обратимся к справке VBA:


Код: Syntax

expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)

expression A variable that represents a Range object.

Example

Set mc = Worksheets("Sheet1").Cells(1, 1)
MsgBox mc.Address() ' $A$1
MsgBox mc.Address(RowAbsolute:=False) ' $A1
MsgBox mc.Address(ReferenceStyle:=xlR1C1) ' R1C1
MsgBox mc.Address(ReferenceStyle:=xlR1C1, _
RowAbsolute:=False, _
ColumnAbsolute:=False, _
RelativeTo:=Worksheets(1).Cells(3, 3)) ' R[-2]C[-2]
Автор: MaximuS G
Дата сообщения: 27.10.2008 18:50
q1wed
Ок, спасибо, я тоже любитель... хобби такое
Автор: SERGE_BLIZNUK
Дата сообщения: 27.10.2008 20:02
MaximuS G

Цитата:
надстройка Excellerator (c) Michael Zemlanukha & Maxim Shemanarev

так как я добавлял эту надстройку в шапку темы по Excel,
то и отвечаю на вопрос в топике по Excel

Автор: MaximuS G
Дата сообщения: 28.10.2008 10:39
SERGE_BLIZNUK
Как установить я знал, теперь знаю что надстройку можна запускать как функцию...
Жаль что там рубли, для Украины не совсем подходит... Все равно спасибо!

Добавлено:
Может пока я думаю, кто нибудь подскажет как написать макрос, чтобы например из строки ПетровИванПетрович исключить повторяющиеся буквы... ?
Автор: dex_2005
Дата сообщения: 28.10.2008 15:15
Доброе время суток!

Имеется лог со следующим содержанием:

27.10.2008 11:11    Каспер    5
27.10.2008 11:11    Днилов    0
27.10.2008 11:12    Днилов    3
28.10.2008 13:19    Шухик    5

данные все в отдельных ячейках, требуется вывести эти данные в виде таблицы на форме "UserForm1", и сделать из них же график или диаграмму там же на форме
Автор: viva_17
Дата сообщения: 28.10.2008 17:50
Доброго времени суток. Народ подскажите плиз, как методами vba добавить строку в лист excel. Например есть лист где заполнено 30 строчек начиная с первой, а надо вставить добавить строчку 25 со своим значением.

Добавлено:
Доброго времени суток. Народ подскажите плиз, как методами vba добавить строку в лист excel. Например есть лист где заполнено 30 строчек начиная с первой, а надо вставить добавить строчку 25 со своим значением.

Добавлено:
Доброго времени суток. Народ подскажите плиз, как методами vba добавить строку в лист excel. Например есть лист где заполнено 30 строчек начиная с первой, а надо вставить добавить строчку 25 со своим значением.

Добавлено:
Доброго времени суток. Народ подскажите плиз, как методами vba добавить строку в лист excel. Например есть лист где заполнено 30 строчек начиная с первой, а надо вставить добавить строчку 25 со своим значением.
Автор: dneprcomp
Дата сообщения: 28.10.2008 20:42
MaximuS G

Цитата:
кто нибудь подскажет как написать макрос

Этак все програмирование на макросы переведется...
Код: a = "DFDFDF"
a = Replace(a, "D", "")
Автор: SAS888
Дата сообщения: 29.10.2008 05:28
MaximuS G

Цитата:
из строки ПетровИванПетрович исключить повторяющиеся буквы

Более подробно:

Код: Dim a As String, b As String
a = "ПетровИванПетрович"
Do
b = b & Left(a, 1)
a = Replace(a, Left(a, 1), "")
Loop While a <> ""

MsgBox b
Автор: dneprcomp
Дата сообщения: 29.10.2008 09:34
SAS888
А зачем же такие сложности и переливания из одной переменной в другую? И это только явное перемещение. А не явных там еще несколько.
Автор: SAS888
Дата сообщения: 29.10.2008 09:40
dneprcomp

Цитата:
А зачем же такие сложности

Подскажите, как сделать проще.
Автор: dneprcomp
Дата сообщения: 29.10.2008 10:16
SAS888
Нет, все верно. Sorry, не учел, что возможнo и несколько другое определение задачи.
Автор: dex_2005
Дата сообщения: 29.10.2008 11:26
Доброе время суток!

Имеется лог со следующим содержанием:

27.10.2008 11:11 Каспер 5
27.10.2008 11:11 Днилов 0
27.10.2008 11:12 Днилов 3
28.10.2008 13:19 Шухик 5

данные все в отдельных ячейках, требуется вывести эти данные в виде таблицы на форме "UserForm1", и сделать из них же график или диаграмму там же на форме
кто нить может мне помочь???
Автор: MaximuS G
Дата сообщения: 29.10.2008 11:40
SAS888
Спасибо за код, достаточно простой, а я вчера такие массивы делал , подскажите, правильно ли говорят, что начиная делать программу лучше сначала придумать алгоритм на бумаге, а потом переносить на код, или это относится только к более сложным кодам ?
dneprcomp

Цитата:
Этак все програмирование на макросы переведется

Ну просто с этго все начинают.. потом ACCESS, SQL ...
Автор: q1wed
Дата сообщения: 29.10.2008 19:03
Всем, Всем Добрый Вечер!!! Большая просьба ко всем: дать ответ на мой вопрос. Второй день безуспешно ищу ответ на вопрос как из одной процедуры передать в другую массив. Пример:

Код: Sub test()
Dim a As Integer
a = 10
podtest a
End Sub

Sub podtest(ByVal a As Integer)
MsgBox a
End Sub
Автор: 64bit
Дата сообщения: 29.10.2008 19:28

Цитата:
как из одной процедуры передать в другую массив


Цитата:
Sub podtest(ByVal myArray As Variant)
' используем LBound и UBound для вычисления размера массива
End Sub
Автор: q1wed
Дата сообщения: 29.10.2008 19:57
64bit Спасибо большое, вся закавыка получается была в том что не Variant у меня было......
Автор: dneprcomp
Дата сообщения: 29.10.2008 20:56
q1wed
Передавать можно не только как Variant. Надо просто в функции правильно указать, что передается именно array. А при использовании Variant VB сам неявно преобразовывает данные в array.

Код: Private Sub AcceptArray(intArray() As Integer)
Private Sub Something(s() As String)
Автор: q1wed
Дата сообщения: 30.10.2008 08:38
dneprcomp на сколько вообще важно и нужно описывать правильно переменные? насколько я понимаю все эти объявления были придуманы еще во времена когда компьютеры били большими, а 32 Кб ОЗУ считалось роскошью. Акутально ли сейчас под каждую переменную выделять ровно столько памяти сколько её нужно по логике задачи? Может быть в наши времена гигагерц и гигабайт достаточно все описать как Variant??
Автор: 64bit
Дата сообщения: 30.10.2008 08:56

Цитата:
как в коде использвовать екселевские формулы не обращаясь к рабочему листу и ячейкам



Цитата:

Dim Res As yourType
Res = Application.WorksheetFunction.FunctionName(param1, param2, ...)


пример использования
Автор: q1wed
Дата сообщения: 30.10.2008 09:14
64bit ага, спасибо, сам допер
Автор: SAS888
Дата сообщения: 30.10.2008 10:24
MaximuS G

Цитата:
правильно ли говорят, что начиная делать программу лучше сначала придумать алгоритм на бумаге

Я, например, сначала просматриваю (можно и на бумаге) возможные варианты решения, затем реализую более "красивый" на мой взгляд.
Автор: q1wed
Дата сообщения: 30.10.2008 11:10
MaximuS G ну если не продумав до конца (на бумаге или в голове) как будет работать проект и что для этого нужно, то к середине написания можно прийти в тупик - понимаешь что выбранная модель не соотвествует поставленной задаче и можно начинать писать все заново. Вот чтобы таких оплошностей не было рисуют на бумаге, а с бумаги уже переводят в код.

пример: писал пару лет назад решалку судоку за основу был выбран Range 9х9, к середине написания оказалось, что желательно иметь третье измерение (для учета кандидатов), в следствии чего проект так и не был закончен до конца из-за сложности в реализации, а переписывать заново уже не хотелось....
Автор: MaximuS G
Дата сообщения: 30.10.2008 13:36
q1wed
SAS888
Спасибо за объяснение и помощь!
Автор: q1wed
Дата сообщения: 30.10.2008 19:58
на сколько вообще важно и нужно описывать правильно переменные? насколько я понимаю все эти объявления были придуманы еще во времена когда компьютеры били большими, а 32 Кб ОЗУ считалось роскошью. Акутально ли сейчас под каждую переменную выделять ровно столько памяти сколько её нужно по логике задачи? Может быть в наши времена гигагерц и гигабайт достаточно все описать как Variant??
Автор: dneprcomp
Дата сообщения: 30.10.2008 22:01
q1wed
Variant в .Net нет - это раз
В програмах происходит множество неявных преобразований data type. Чтобы, складывая лампочки и апельсины, ненароком не получить лампольсины, надо/проще следить за перемеными. Это два.
Когда бухгалтер вместо $1.5 тысячи выдаст тебе $1.0 потому как програма не в тот data type поместила, быстро поймешь надо ли переменные подбирать. Это три
Пока у тебя небольшие объемы даных все кажется незаметным. Это четыре.
Себе штаны тоже берешь 75 размера? Как код выглядит тоже важно. A не только как он работает. Это пять

Ну, пока хватит...
Автор: Bredun
Дата сообщения: 31.10.2008 07:42

Цитата:
на сколько вообще важно и нужно описывать правильно переменные? насколько я понимаю все эти объявления были придуманы еще во времена когда компьютеры били большими, а 32 Кб ОЗУ считалось роскошью. Акутально ли сейчас под каждую переменную выделять ровно столько памяти сколько её нужно по логике задачи? Может быть в наши времена гигагерц и гигабайт достаточно все описать как Variant??

Это, ИМХО, становится критично при использовании больших массивов. Иногда приходится создавать массив с 1е6 элементов. Вот тогда, то начинаешь "считать каждую копейку"...
Автор: Pravoved90
Дата сообщения: 31.10.2008 16:18
Добрый день, друзья. помогите состряпать такой макрос: Есть две таблицы A и B с числовыми значениями. Нужно сделать так, чтобы каждое число соотносилось с каждым, и в случае, когда какое-нибудь число из табл. А было < числа из табл. B, ети два числа (>и<) закрашивались в зеленый цвет. Конечно действие немного сложнее, но мне главное понять основу..Спасибо за помощь
Автор: nick7inc
Дата сообщения: 01.11.2008 00:21
Pravoved90

Цитата:
в случае, когда какое-нибудь число из табл. А было < числа из табл. B, ети два числа (>и<) закрашивались в зеленый цвет.

По-моему, это проще сделать вообще без макросов при помощи условного форматирования. Меню/Формат/Условное форматирование ну и т.д.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

Предыдущая тема: Написание своего HyperTerminal для считывания данных


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