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

» Excel VBA (часть 2)

Автор: SAS888
Дата сообщения: 05.12.2007 12:07
Ergistael
Конечно Вы правы. Я, видимо, не совсем верно сформулировал исходный вопрос. В моем (частном) случае в ячейках со ссылками формула исключена. Подробнее: в таблице Excel находятся ссылки на ячейки из конкретной книги с конкретных листов. Все дальнейшие действия Excel и макросов имеют дело уже с этими данными. Нужно было лишь подменить имена книг и листов, входящих в ссылку.

Добавлено:
В общем случае все равно приходится "разбирать" строку.
Автор: Dastali
Дата сообщения: 05.12.2007 13:20
Господа возможно ли макросами и как, если Вам не трудно, решить такую траблу:
Копируем энное кол-во ячеек с гипер ссылками с одного ексель документа в другой надо что бы во втором документе все ссылки вида \\server-main\bla\bla\bla
заменились на \\192.168.168.3\bla\bla\bla...

С Уважением
Автор: Frantishek
Дата сообщения: 05.12.2007 14:38
Ребят подскажите плиз как снять ограничение на кол-во столбцов/строк для работы под новым Excel 2007. Есть add-on который давно не обновлялся, не хочет выводить график в длину больше 255 столбцов, грит дальше нельзя, что исправить?
Автор: AndVGri
Дата сообщения: 05.12.2007 15:42
Dastali
Вот функция для смены

Код:
Public Function ChangeUNC(ByVal UNCString As String, ByVal ipString As String) As String
Dim pos As Long

pos = VBA.InStr(3&, UNCString, "\")
If pos = 0& Then
ChangeUNC = ""
Else
ChangeUNC = "\\" & ipString & VBA.Mid$(UNCString, pos)
End If
End Function
Автор: volidol1
Дата сообщения: 05.12.2007 15:55

Цитата:
Выход - увеличивать ширину столбца

Так и пришлось поступить: вначале Autofit, а затем увеличение ширин всех колонок на константу или процент от ширины.
Все равно, спасибо!
Автор: garais71
Дата сообщения: 05.12.2007 16:11
Всем привет! Нет у кого-ли желания повозиться с ламером? Не хочется загружать форум глупыми вопросами, так что желательно общение через какую-нибудь болталку.
Автор: CEMEH
Дата сообщения: 05.12.2007 18:27
ВОПРОС:

Для визуального отображения хода выполнения макроса решил использовать Label1 на форме, тест которого будет изменяться в процессе выполнения.
пишу

Label1 = X' т.е. значение переменной X

но не вижу (не меняется). На юзерформ Label1 без изменений. Что не так?
СПАСИБО!
Автор: kalinakrasnay
Дата сообщения: 05.12.2007 19:24
Привет! Такой вопрос: можно ли с помощью какого-нибудь свойства/встроенной функции запретить пользователю на форме вводить в поле Textbox буквы, нужно чтоб вводились только цифры.
p.s. форма и вся ерунда находится в экселе, так что я точно по теме...
Автор: dneprcomp
Дата сообщения: 05.12.2007 21:06
kalinakrasnay
5555555 уже дал тебе ответ http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=5993&start=500#lt
Автор: volidol1
Дата сообщения: 06.12.2007 18:42

Цитата:
Label1 = X' т.е. значение переменной X

Попробуйте Label1.Caption= X
Автор: maratino
Дата сообщения: 07.12.2007 16:51
SAS888
Ogromnoe tebe SPOSIBO
Kod rabotaet kak nado
SUPER!!!!
Автор: toNk
Дата сообщения: 09.12.2007 12:08
Коллеги,

Подскажите, пожалуйста, как защитить лист от редактирования с сохранением возможности отображать и скрывать сгруппированные строки/столбцы (ну, которые под плюсиками)?
Надеюсь, вопрос по теме, ибо стандартными средствами это, похоже, не решается.
Автор: Timans1
Дата сообщения: 10.12.2007 10:10
Подскажите, пожайлуста.
Нужно создать список акций который котируется на ММВБ и закачивать котировки по выборочным акциям. Как это можно сделать?
Автор: Kins
Дата сообщения: 10.12.2007 13:27
toNk

Ctrl + A
меню Сервис - защита - защитить лист

ты это ищещь?
Автор: toNk
Дата сообщения: 10.12.2007 20:39
Kins
Если защитить лист таким способом, то независимо от списка разрешений на этом листе невозможно сгруппировать или разгруппировать строки/столбцы.
Мне нужно сохранить эту возможность, при этом запретив пользователям редактировать залоченные области.
Автор: kerimchik
Дата сообщения: 11.12.2007 14:18
Как в одном столбике узнать сколько одинаковых?
Т.е. была такая функция я забыл... что он показывал цифру, в столбике сколько чего...
Есть такое?
Автор: Anton T
Дата сообщения: 11.12.2007 16:34
Добрый вечер!
В екселе на листбоксе список домов в количестве 40 шт., передается в базы, но в базе всего лишь один дом, а 39 пропущено! Как решить?


Код:
Private Sub CommandButton2_Click()

Dim dbs As Database
Dim aaa As TableDef
Dim rst As Recordset
Dim WS As Worksheet
Dim i As Integer

rw = ListBox1.ListCount
cl = ListBox1.ColumnCount

Set dbs = OpenDatabase("C:\access-excel\db1.mdb") 'Открываем в памяте

Set aaa = dbs.CreateTableDef(TB2.Value) 'В аксессе содзает имя
With aaa
.Fields.Append .CreateField("F", dbText)
.Fields.Append .CreateField("N", dbText)
.Fields.Append .CreateField("O", dbText)
.Fields.Append .CreateField("G", dbText)
.Fields.Append .CreateField("A", dbText)
.Fields.Append .CreateField("D", dbText)
.Fields.Append .CreateField("K", dbText)
.Fields.Append .CreateField("K1", dbText)
.Fields.Append .CreateField("K2", dbText)
.Fields.Append .CreateField("S", dbText)
.Fields.Append .CreateField("R", dbText)
.Fields.Append .CreateField("C", dbText)
.Fields.Append .CreateField("D1", dbText)
End With
dbs.TableDefs.Append aaa

Set rst = dbs.TableDefs(TB2.Value).OpenRecordset(dbOpenDynaset)
With rst
.AddNew
.Fields("F").Value = CStr(Cells(rw, cl - 12).Value)
.Fields("N").Value = CStr(Cells(rw, cl - 11).Value)
.Fields("O").Value = CStr(Cells(rw, cl - 10).Value)
.Fields("G").Value = CStr(Cells(rw, cl - 9).Value)
.Fields("A").Value = CStr(Cells(rw, cl - 8).Value)
.Fields("D").Value = CStr(Cells(rw, cl - 7).Value)
.Fields("K").Value = CStr(Cells(rw, cl - 6).Value)
.Fields("K1").Value = CStr(Cells(rw, cl - 5).Value)
.Fields("K2").Value = CStr(Cells(rw, cl - 4).Value)
.Fields("S").Value = CStr(Cells(rw, cl - 3).Value)
.Fields("R").Value = CStr(Cells(rw, cl - 2).Value)
.Fields("C").Value = CStr(Cells(rw, cl - 1).Value)
.Fields("D1").Value = CStr(Cells(rw, cl).Value)
.Update
.Close
End With

dbs.Close

End Sub
Автор: dneprcomp
Дата сообщения: 11.12.2007 21:01
Anton T
Попробуй

Код: Set rst = dbs.TableDefs(TB2.Value).OpenRecordset(dbOpenDynaset)
With rst
For i=0 to rw
.AddNew
.Fields("F").Value = CStr(Cells(i, cl - 12).Value)
.Fields("N").Value = CStr(Cells(i, cl - 11).Value)
.Fields("O").Value = CStr(Cells(i, cl - 10).Value)
.Fields("G").Value = CStr(Cells(i, cl - 9).Value)
.Fields("A").Value = CStr(Cells(i, cl - 8).Value)
.Fields("D").Value = CStr(Cells(i, cl - 7).Value)
.Fields("K").Value = CStr(Cells(i, cl - 6).Value)
.Fields("K1").Value = CStr(Cells(i, cl - 5).Value)
.Fields("K2").Value = CStr(Cells(i, cl - 4).Value)
.Fields("S").Value = CStr(Cells(i, cl - 3).Value)
.Fields("R").Value = CStr(Cells(i, cl - 2).Value)
.Fields("C").Value = CStr(Cells(i, cl - 1).Value)
.Fields("D1").Value = CStr(Cells(i, cl).Value)
.Update
Next i
.Close
End With
Автор: SAS888
Дата сообщения: 12.12.2007 05:10
kerimchik
Стандартная функция Excel "СчетЕсли".
Следующий макрос, например, подсчитает количество x в столбце A.

Sub CIF()
x = "q" 'x может быть любого типа
MsgBox Application.CountIf(Range("A:A"), x)
End Sub
Автор: Anton T
Дата сообщения: 12.12.2007 07:10
dneprcomp
хм.. спасибо, попробую.

Добавлено:
dneprcomp
Не получилось выдает ошибку "Application-defined or object-defined error", выдает желтую строку: .Fields("F").Value = CStr(Cells(i, cl - 12).Value)
Автор: dneprcomp
Дата сообщения: 12.12.2007 10:04
Anton T
Видимо ListBox индекс начинается с 1. Попробуй
For i=1 to rw
Автор: Anton T
Дата сообщения: 12.12.2007 11:56
dneprcomp
Вот тоже такая ошибка: "Поле 'Имя.R' не допускает ввод пустых строк", а потом желтую .Update
Автор: volidol1
Дата сообщения: 12.12.2007 12:38

Цитата:
на этом листе невозможно сгруппировать или разгруппировать строки/столбцы

Попробуй с помощью макроса типа ActiveSheet.Outline.ShowLevels rowLevels:=2, columnLevels:=1.
Автор: SAS888
Дата сообщения: 12.12.2007 13:29
Timans1

Цитата:
Нужно создать список акций который котируется на ММВБ и закачивать котировки по выборочным акциям


Так пойдет?

Sub MMVB()
With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.micex.ru", Destination:=Range("A1"))
.Name = "www.micex.ru"
.FieldNames = True
.PreserveFormatting = True
.RefreshStyle = xlInsertDeleteCells
.AdjustColumnWidth = True
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "105"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.Refresh BackgroundQuery:=False
End With
End Sub
Автор: dneprcomp
Дата сообщения: 12.12.2007 20:32
Anton T

Цитата:
Вот тоже такая ошибка: "Поле 'Имя.R' не допускает ввод пустых строк",
В базе при создании разрешить ввод пустых строк
Автор: toNk
Дата сообщения: 13.12.2007 09:00
volidol1

Цитата:
Попробуй с помощью макроса типа ActiveSheet.Outline.ShowLevels rowLevels:=2, columnLevels:=1.

Можно поподробней?
Автор: Timans1
Дата сообщения: 13.12.2007 11:06
SAS888
SAS888
Спасибо
Автор: volidol1
Дата сообщения: 14.12.2007 09:53

Цитата:
Можно поподробней?

Можно, например, так:
добавить на лист CheckBox-ы для каждого уровня группировки, а далее в зависимости от флага управлять "плюсиками" кодом.
Пример:
Sub Flag1()
Dim ThislName As Boolean
Dim myName As String
Dim s As Shape

For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
If s.FormControlType = xlCheckBox Then
myName = s.TextFrame.Characters.Text
If myName = "Имя нашего CheckBox" Then
If s.ControlFormat.Value = 1 Then
ThislName = True
Else
ThislName = False
End If
End If
End If
End If
Next

Select Case ThislName
Case True
ActiveSheet.Outline.ShowLevels rowLevels:=2, columnLevels:=1
Case False
ActiveSheet.Outline.ShowLevels rowLevels:=1
End Select
End Sub
Автор: toNk
Дата сообщения: 14.12.2007 16:57
volidol1
Спасибо огромное!
Как попробую, отпишусь!
Автор: toNk
Дата сообщения: 15.12.2007 12:08
volidol1
Максро работает. Но на защищенном листе все равно не дает раскрыть/скрыть плюсики
Как вариант, добавить в макрос снятие защиты листа до исполнения, и повторную защиту после. Но у меня получается только защита без пароля.

Может кто подскажет макрос на защиту листа с паролем?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

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


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