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

» Excel VBA (часть 2)

Автор: Pravoved90
Дата сообщения: 01.11.2008 03:45
nick7inc
Знаю, как поставить в условный формат диапозон..а разве можно формулой выделить конкретное число(числа) из диапозона, подподающие под условия? Если да, то как это записать? Спасибо
Автор: SuzTS
Дата сообщения: 02.11.2008 00:07
Помогите программно вставить картинку в примечание, так чтобы опять же программно ее можно было отобразить в исходном размере.
Этот код:
Range("B6").AddComment
Range("B6").Comment.Shape.Fill.UserPicture "C:\Фото\6.jpg"

картинку в комментарий к ячейке В6 добавляет, но на вкладке "Размер" "Формата Примечания" исходный размер не появляется.
А вот если руками добавлять картинку через Формат Примечания-Цвета и линии - Заливка - Способы заливки - Рисунок ну к примеру к ячейке В3, то на вкладке "Размер" "Формата Примечания" исходный размер появляется и кнопкой "Сброс" картинка приводится к своему исходному размеру.

На planetaexcel видел инфу, что при вставке картинки через макрос она вроде как цепляется по связи, а при вставке вручную внедряется в документ. Может есть еще что-нибудь кроме userpicture? Но этот userpictue выдает макрокодер, когда пишет макрос по ручной вставке картинки.
Автор: dex_2005
Дата сообщения: 03.11.2008 07:43
Доброе время суток!
Который раз задаю один и тот же вопрос и ни кто мне не может помочь?!? странно как то?!?! Вроде столько светлых умом тут появляются.
Вот сам вопрос!

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

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", и сделать из них же график или диаграмму там же на форме.
Автор: Olive77
Дата сообщения: 03.11.2008 11:06
dex_2005

Цитата:
Обратите внимание, этот топик для помощи в изучении и использовании VBA.

а твой вопрос фактически сводится к просьбе, написать весь макрос за тебя.
Посему никто и не отвечает.
Автор: CEMEH
Дата сообщения: 03.11.2008 16:00
dex_2005

Olive77 +1

Таблицу на форму выводить с помощью ListBox. А вот на счет диаграммы не знаю.
Теоретически в качестве диаграммы можно использовать дополнительный столбец в томже ListBox. А значения в него ставить по формуле =ПОВТОР(A,B) где А - какойнить символ (точка, например) В - значение 3-го столбца у таблицы.
В итоге на форме получится листбокс в котором 3 столбца из указанной выше таблицы, а в четвертом столбце точки (образующий некий микрографик.)


ВОПРОС:
на форме несколько combobox
ComboBoxCPU
ComboBoxIP
ComboBoxOS
Кроме них есть еще и другие (которые обрабатывать не надо)
Так вот, что бы не повторять код для каждого combobox я хочу их объединить в коллекцию и обрабатывать в цикле.
Нужно что то в этом духе

Код:
коллекция(1)=ComboBoxCPU
коллекция(2)=ComboBoxIP
коллекция(3)=ComboBoxOS
for x=1 to 3
коллекция(x)=3' то есть combobox(X)=X
next X
Автор: jocer
Дата сообщения: 04.11.2008 11:44
подскажите как из VBA можно управлять мышкой? установить например в какую-то позицию и кликнуть правой кнопкой?
Автор: CEMEH
Дата сообщения: 04.11.2008 14:52
jocer
На счет решения этой задачки Excel-ем не скажу, но есть очень интересная программка AutoHotkey. Может записать действия юзера, а потом воспроизвести. Есть возможность редактирования кода.



ВОПРОС

Код: On error resume L1
X=1/0
L1:
On error resume L2
Y=1/0
L2:
On error resume L3
Z=1/0
L3:
Автор: Olive77
Дата сообщения: 04.11.2008 16:18
CEMEH
On error resume L1
-->
On Error GoTo L1
...


Цитата:
обрабатывать в цикле.

For Each cbo In UserForm1.Controls

If UCase(TypeName(cbo)) = "COMBOBOX" Then
...
End If

Next cbo

Добавлено
Oops, проглядел

Цитата:
Кроме них есть еще и другие (которые обрабатывать не надо)

да, вобщем-то, ты уже и сам ответил на свой вопрос.
Да мой взгляд, достаточно организовать массив
Dim arrCbo(1 to 3) as string

дальше определить твой массив
arrCbo(1)="ComboBoxCPU"
arrCbo(2)="ComboBoxIP"
arrCbo(3)="ComboBoxOS"

и делай, что хочешь
for i=1 to ubound(arrCbo)
...
next X


с коллекцией будет выглядеть след. образом


Код:
Private colStrings As Collection

Sub test()

Set colStrings = New Collection

colStrings.Add "ComboBoxCPU"
colStrings.Add "ComboBoxIP"
colStrings.Add "ComboBoxOS"

For Each el In colStrings
...
Next el

Set colStrings = Nothing
End Sub
Автор: YuGo
Дата сообщения: 04.11.2008 21:14
VBA Excel как проверить ячейку на наличие определенного текста?

Например в определенной ячейке есть текст. Необходимо проверить встречается ли там фрагмент текста L21, если да то содержимое другой ячейки удвоить. Thanks!!!
Автор: Olive77
Дата сообщения: 05.11.2008 08:43
YuGo
if Range(sAddress).value like "*" & sText & "*" then
...
end if
Автор: teaminteam
Дата сообщения: 05.11.2008 09:35
Подскажите пожалуйста новичку как будет выглядеть часть макроса, удаляющая знак "=" из формулы
Автор: Olive77
Дата сообщения: 05.11.2008 10:08
teaminteam
если совсем просто, то
sFormula = Range("B2").Formula
sFormula = Right(sFormula, Len(sFormula) - 1)
Автор: Kygyar
Дата сообщения: 05.11.2008 10:33
подскажите, пожалуйста, макрос excel открывает word-файл, можно ли сразу указать, чтобы открытие шло "Только чтение"?
Автор: Olive77
Дата сообщения: 05.11.2008 11:02
Kygyar
да, можно #



Добавлено
Нажать редактировать в моем посте.
Автор: Kygyar
Дата сообщения: 05.11.2008 12:34
Olive77
я извиняюсь, а можно уточнить, как?


Добавлено:
вопрос отпал =)
ЗЫ я только учусь
Автор: VitFONAREV
Дата сообщения: 06.11.2008 10:49
Помогите плиз. Необходимо из VBA excel считать свойства DWG файла. Проблема в том что DSOfile позволяет взять информацию только с закладки свойства. (если смотреть свойства файла в виндах) . у файлов Autocad автор изменений находится в закладке статистика- вот его и необходимо получить. За ранее спасибо.
Автор: q1wed
Дата сообщения: 06.11.2008 12:50
VitFONAREV я бы пошел следующим путем: открыл бы DWG в шестнадцетиричном редакторе и посмотрел бы через поиск по какому адресу (или ключу) находится информация об авторе файла. Повторил бы эти операции на других DWG файлах, и если адрес/ключ совпадает, то можно смело писать макрос который открывал бы DWG как текстовый файл(или бинарный) и считывал бы нужный текст с нужного адреса/ключа. воть
Автор: SERGE_BLIZNUK
Дата сообщения: 06.11.2008 15:18
q1wed +1
VitFONAREV возьмите пару-тройку ваших DWG файлов (только не очень больших), запакуйте, выложите и сюда ссылочку... посмотрим, где там автор прячется... ;-)

Автор: VitFONAREV
Дата сообщения: 06.11.2008 17:12
посмотрел файлы имя гдето в конце есть. Но закономерности я не нашол. Подозреваю что в разных версиях автокада метки могут быть свои. Интересно каким образом винда эти свойства извлекает. И если они хроняться с помощью NTFS то как их выудить. Подозреваю что надо как-то Win32API ковырять.
И еще. Если я могу из VBA excel вызвать окно свойств файла , как бы из этого окна значения полей по выдергивать.

И большое спасибо за внимание. но к сожалению с выкладывание некоторые проблемы. На работе доступ урезан почти до минимума.
Автор: dneprcomp
Дата сообщения: 06.11.2008 20:14
VitFONAREV
Попрбуй
http://vbnet.mvps.org/index.html?code/fileapi/filesearchinfo.htm
http://vbnet.mvps.org/index.html?code/shell/propertypage.htm
http://discussion.autodesk.com/forums/thread.jspa?threadID=577959&tstart=0
Автор: Solenaja
Дата сообщения: 07.11.2008 11:21
Помогите модифицировать, а то что-то не получается

Код: Sub searching2()
Dim FirstRow&, LastRow&
FirstRow = ActiveWorkbook.ActiveSheet.UsedRange.Row
LastRow = FirstRow + ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count - 1
r = 1 'Номер строки, с которой начнется запись вычленных строк в другом листе.
'Finish = LastRow() 'Если опустить параметры, то функция посчитает непустые строки в первом столбце на активном листе, активной рабочей книги.
For i = FirstRow To LastRow
If Left(Cells(i, 1), 3) = "Упр" Then 'Находим строку, начинающуюся с "Упр"
If Left(Cells(i + 1, 1), 2) = "Не" Then 'Находим строку, начинающуюся с "Не"
'Добавляем вычлененные строки на лист "ИмяЛиста"
Sheets("Лист2").Cells(r, 1) = Cells(i, 1)
' с - № колонки в которую делается запись
Sheets("Лист2").Cells(r + 1, 1) = Cells(i + 1, 1)
r = r + 2
End If
End If
Next i
End Sub
Автор: nick7inc
Дата сообщения: 07.11.2008 16:34
Pravoved90

Цитата:
а разве можно формулой выделить конкретное число(числа) из диапозона, подподающие под условия?

Что-то я вас не понял.... Условное форматирование распространяется на ячейку целиком, то есть нельзя покрасить в ячейке одну цифру из нескольких, можно только все.
Автор: CEMEH
Дата сообщения: 08.11.2008 11:16
вопрос

private sub label1_clic
открыть файл(путь до файла) приложением, которое используется по умолчанию для файлов этого типа
end sub
Автор: dex_2005
Дата сообщения: 09.11.2008 09:35
кто подскажет как вытаскивать название диаграммы??? для дальнейшего ее использования в программе?
Автор: freimanis
Дата сообщения: 09.11.2008 14:32

Цитата:
кто подскажет как вытаскивать название диаграммы???

ActiveChart.ChartTitle.Characters.Text

Добавлено:

Цитата:
вопрос

private sub label1_clic
открыть файл(путь до файла) приложением, которое используется по умолчанию для файлов этого типа
end sub

Тынц
Автор: VitFONAREV
Дата сообщения: 10.11.2008 12:28
возвращаюсь к автокаду. Спасибо dneprcomp за ссылки но к сожалению не помогли. Попробую в VBA autocad посмотреть может из него какую библеотеку взять можно.
Автор: Tivalta
Дата сообщения: 10.11.2008 22:33
Помогите решить задачу на VBA
Есть 30 combobox в них внесены значения(8, В, о/б) нужно подсчитать значения только 8, но не как-8+8+8+8+8........, а как 1+1+1+1+1 (8-количество отработанных дней)
Автор: YuGo
Дата сообщения: 10.11.2008 23:24
Olive77

Цитата:
YuGo
if Range(sAddress).value like "*" & sText & "*" then
...
end if


Olivet77 ты супер, а на конкретном примере возможно? Диапозон ячеек А1:А10 содержит определенный текст, если в них соответственно встречается фрагмент текста L21, то содержимое соответствующих ячеек B1:B10 накапливать (суммировать) в ячейке C1.
THANKS!!!
Автор: dneprcomp
Дата сообщения: 11.11.2008 02:54
Tivalta
Вообще-то я не помогаю делать домашние задания. Это ведь не мне надо учиться и оценки получать...
Ну, в виде исключения. Насколько я понял задачу:


Код: Private Sub CommandButton1_Click()

Dim cCont As Control
Dim X As Integer

X = 0

For Each cCont In Me.Controls
If TypeName(cCont) = "ComboBox" Then
If cCont.Text = "8" Then
X = X + 1
End If
End If
Next cCont

End Sub
Автор: nopoxz
Дата сообщения: 12.11.2008 10:01
Такой вопросик:

у меня есть ексел под паролем. Из другого ексела делаю датабейс запрос данных из пароленного эксела. Если пароленный эксел открыт (введён пароль), то запрос работает. Если не открыт, то пишет что кулд нот декрипт файл.

Есть ли возможность прописать где-то пароль в самом запросе чтобы не требовалось открывать пароленный эксел при каждом запросе?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

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


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