Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / поиск ячейки в excel / 25 сообщений из 27, страница 1 из 2
14.10.2009, 10:18
    #36249558
kraus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Доброе утро Всем! Столкнулся с проблемой, не большой.
Вывожу прайс из access'a в excel. Товар распределен по группам, типа:
Группа: "Товар1"
1.ваааааааааааааааааааааа
2.вааааааааааааааааааааава
Группа: "Товар2"
---------------------------------------------------
---------------------------------------------------
Мне необходимо Название группы выделить и изменить шрифт.

Как мне это сделать?
...
Рейтинг: 0 / 0
14.10.2009, 10:50
    #36249685
kraus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
пробовал искать по слову "Группа:". но при выполнении весь текст выделился....
...
Рейтинг: 0 / 0
14.10.2009, 11:37
    #36249872
by-pass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
можно так
Код: plaintext
1.
2.
                .Rows("1:1").Select
                .Selection.Font.Bold = True
...
Рейтинг: 0 / 0
14.10.2009, 11:42
    #36249889
astatsa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
kraus

а что если слово "Группа" и название группы помещать в разные ячейки, потом находить слово "Группа" и менять шрифт в ячейке справа от этой.
Можно конечно и так:
найти слово группа и
Cell(i,j).Characters(Start:=9, Length:=len).Font.Bold = true
где len - длина названия группы
А вообще, Сервис->Макрос->Начать запись...
...
Рейтинг: 0 / 0
14.10.2009, 19:30
    #36251503
kraus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Нахожу ячейку со словом "Группа:" и меняю шрифт.
Но у меня строк таких несколько, а шрифт меняет только в одной строке.
Подскажите, подалуйста, как мне цикл составить, чтобы все строки проверялись....?
...
Рейтинг: 0 / 0
14.10.2009, 19:51
    #36251538
kraus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Вот как я ее искал и форматировал:

Set obj1 = .Cells.Find("Группа:")
obj1.Font.Bold = True
obj1.Font.Size = 14
...
Рейтинг: 0 / 0
14.10.2009, 20:53
    #36251632
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Могу дать пример кода поиска:
Код: plaintext
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.
35.
36.
37.
38.
39.
40.
41.
42.
Sub compare5()

Set Target = ThisWorkbook.Sheets( 1 ).UsedRange.Columns( 2 ).Cells

For Each cc In Target 'цикл по используемым ячейкам втрой колонки
a = cc.Rows.Row 'номер ряда анализируемй ячейки
flag =  0  'флаг совпадения

Set x = ThisWorkbook.Sheets( 1 ).Columns( 6 ).Find(ThisWorkbook.Sheets( 1 ).Cells(a,  2 ), _
    LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True) 'поиск полного совпадения _
    по  6 -ой колонке значения из  2 -ой колонки  1 -го файла
    
If x Is Nothing Then ' если не нашли, уходим на след.поиск
GoTo goout
Else
    iFirstAddress = x.Address 'запоминаем адрес первого совпадения
    
            If Cells(a,  3 ).Value = Cells(x.Rows.Row,  7 ).Value Then
            flag =  1  'если пара совпадает, ставим пометку
            GoTo goout  ' уходим на след.поиск
            End If
            
    Do ' запускаемся на поиск след.совпадений
    Set x = ThisWorkbook.Sheets( 1 ).Columns( 6 ).FindNext(x)
    iSecondAddress = x.Address 'запоминаем адрес следующего совпадения
    
        If Cells(a,  3 ).Value = Cells(x.Rows.Row,  7 ).Value Then
        flag =  1  'если пара совпадает, ставим пометку и
        Exit Do ' выходим в итоге совсем из поиска
        End If
        
    Loop While iFirstAddress <> iSecondAddress 'ищем, пока не вернёмся на первое совпадение
    
End If

goout: 'процедура выхода из цикла поиска
If flag =  0  Then _
Cells(a,  4 ).Value = Cells(a,  1 ).Value & " " & Cells(a,  2 ).Value & " " & Cells(a,  3 ).Value
        'если нет результата поиска или пара не совпадает, тогда пишем пометку в 4-ю ячейку
Next 'следующая ячейка

End Sub
Здесь задача немного другая, но главное в Вашей задаче - искать все совпадения, While iFirstAddress <> iSecondAddress 'ищем, пока не вернёмся на первое совпадение.
...
Рейтинг: 0 / 0
14.10.2009, 21:14
    #36251667
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Или вот, поиск по всем листам:
Код: plaintext
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.
35.
36.
37.
Sub kraus()
      iValue = "Группа:"
      
For Each iList In Worksheets

Set iFinds = iList.UsedRange.Find(iValue, LookIn:=xlValues)

If Not iFinds Is Nothing Then

iFirstAddress = iFinds.Address
        
Do

'сюда надо прикрутить Ваш код:
'Set obj1 = .Cells.Find("Группа:") - это меняем на
Set obj1 = iFinds
obj1.Font.Bold = True
obj1.Font.Size =  14 

iFindValue = iFindValue & vbCrLf & iList.Name & " - " & iFinds.Address & " - " & iFinds.Value
iCount = iCount +  1 

Set iFinds = iList.UsedRange.FindNext(iFinds)

Loop While Not iFinds Is Nothing And iFinds.Address <> iFirstAddress
    
End If

Next

If iCount >  0  Then

MsgBox iFindValue, , "Количество найденных совпадений : " & iCount
End If

End Sub

В конце MsgBox можно и отключить. Проверено, работает.
...
Рейтинг: 0 / 0
14.10.2009, 21:25
    #36251684
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Короче, вот и поиск по активному листу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub KrausShort()
      iValue = "Группа:"
      
Set iFinds = ActiveSheet.UsedRange.Find(iValue, LookIn:=xlValues)

If Not iFinds Is Nothing Then

iFirstAddress = iFinds.Address
        
Do
Set obj1 = iFinds
obj1.Font.Bold = True
obj1.Font.Size =  14 

Set iFinds = ActiveSheet.UsedRange.FindNext(iFinds)

Loop While Not iFinds Is Nothing And iFinds.Address <> iFirstAddress
    
End If

End Sub
...
Рейтинг: 0 / 0
14.10.2009, 22:09
    #36251735
kraus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
А какого типа переменные iFirstAddress и iFinds?
...
Рейтинг: 0 / 0
15.10.2009, 09:06
    #36252102
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Добавь в код
Код: plaintext
1.
Debug.Print iFinds
Debug.Print iFirstAddress
Получишь результат:
Код: plaintext
1.
2.
Группа:
$I$ 22 
...
Рейтинг: 0 / 0
15.10.2009, 09:07
    #36252108
kraus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Hugo121, Огромное Вам спасибо за помощь!

Все работает как надо.
...
Рейтинг: 0 / 0
15.10.2009, 09:33
    #36252163
kraus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
А вот еще вопрос возник интересный.

Есть строка "Дата: Z2". Нужно вместо "Z2" вставить текущую дату.

В заданную ячейку то я без проблем вставляю, а вот как заменить именно часть текста
...
Рейтинг: 0 / 0
15.10.2009, 09:48
    #36252199
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Может заменить как часть строки

str = Left(str, 6) & Now()
...
Рейтинг: 0 / 0
15.10.2009, 09:52
    #36252209
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub tt()
Dim str As Variant
str = "Дата: Z2"
str = Left(str,  6 ) & Format(Now(), "DD.MM.YYYY")
MsgBox str

End Sub
...
Рейтинг: 0 / 0
15.10.2009, 10:10
    #36252257
kraus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Не стал заморачиваться. :-) Пошел более простым путем:

.ActiveSheet.Cells.Find("Z2") = "Дата:" + " " + CStr(Date)

Спасибо за отзыв.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
15.12.2010, 08:18
    #37014943
yura31
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
доброе время суток
что бы не создавать новую тему спрошу здесь
подскажите плиз как например ниже приведенный код макроса excel (VBA), перевести на VBS чтобы можна было запускать (с внешнего скрипта *.vbs) его не заходя в файл excel.
Большое спасибо!

Hugo121Короче, вот и поиск по активному листу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub KrausShort()
      iValue = "Группа:"
      
Set iFinds = ActiveSheet.UsedRange.Find(iValue, LookIn:=xlValues)

If Not iFinds Is Nothing Then

iFirstAddress = iFinds.Address
        
Do
Set obj1 = iFinds
obj1.Font.Bold = True
obj1.Font.Size =  14 

Set iFinds = ActiveSheet.UsedRange.FindNext(iFinds)

Loop While Not iFinds Is Nothing And iFinds.Address <> iFirstAddress
    
End If

End Sub
...
Рейтинг: 0 / 0
15.12.2010, 10:43
    #37015198
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Примерно так:

Код: plaintext
Set EX=CreateObject("Excel.Application")
У вас появляется объект EX, который соответствует объекту Application экселя.
Далее открываете книгу:
Код: plaintext
Set WB=EX.Workbooks.Open("FileName")
У вас есть объект WB со ссылкой на эту книгу.

Ну а дальше ваш макрос, ссылки на объекты в нем должны отталкиваться от EX или WB/
Вместо ActiveSheet лучше использовать ссылку на конкретный лист:
Код: plaintext
WB.Worksheets("Лист1")
...
Рейтинг: 0 / 0
15.12.2010, 16:51
    #37016539
yura31
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Shocker.Pro спасибо за ответ, но не дождавшись ответа навалял другой скрипт.
Суть задачи найти значение в ячейки, если "есть" то выдать сообщение если "нет" то выход с цыкла. У меня скрипт далает эту задачу, но помогите передалать его так что бы вместо for использовать " for each " ...или как по другому пройти только один раз по цыклу.
Большое спасибо
вот сам код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Option explicit
const xlsFileName = "D:\script\vbs\Nastenko\1.xls"
dim fso, b, s, i, WSHShell, objXL, result
'on error resume next

set fso = createobject("Scripting.FileSystemObject")
Set objXL = WScript.CreateObject("Excel.Application")
set WSHShell = WScript.CreateObject("WScript.Shell")
set b = objXL.workbooks.open(xlsFileName) 'открываем книгу
set s = (b.sheets( 1 )) 'номер листа в книге
for i =  1  to  50  
	'if s.Cells(i,1).Interior.ColorIndex = 3 then        ' определять по цвету
	if s.Cells(i, 1 ).value  = "tru" then                       ' опредилять по тексту
	result = MsgBox ("Открыть файл ?", vbExclamation + vbYesNo, "Бла-Бла")
		if result = vbYes then 
		objXL.Visible = True
			objXL.Workbooks.Open xlsFileName
			else  
			b.close true
			objXL.quit			
			
		end if
	end if
next
...
Рейтинг: 0 / 0
15.12.2010, 16:57
    #37016563
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
yura31вместо for использовать " for each " ...или как по другому пройти только один раз по цыклу.
А что, разве For проходит несколько раз?
...
Рейтинг: 0 / 0
15.12.2010, 17:24
    #37016657
yura31
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
еще раз спасибо за ответ
Код: plaintext
for i =  1  to  50  
походу да, если пробую зайти в файл пишет что он занят и доступный только для чтения
если текст присутствует и найден то все ОК
Код: plaintext
if s.Cells(i, 1 ).value  = "tru"

я так понимаю его дердит работа "цыкла"
...
Рейтинг: 0 / 0
15.12.2010, 17:45
    #37016711
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
yura31,

неправильно
вы просто забываете закрыть эксель, если цикл закончился, а текст не найден
...
Рейтинг: 0 / 0
15.12.2010, 23:00
    #37017125
yura31
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Вы правы... Большое спасибо!
но не могу разобраться с синтаксисом....

Код: plaintext
1.
b.close true
objXL.quit

Как правильно привязать к первому условию?
...
Рейтинг: 0 / 0
15.12.2010, 23:06
    #37017129
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
yura31Вы правы... Большое спасибо!
но не могу разобраться с синтаксисом....

Код: plaintext
1.
b.close true
objXL.quit

Как правильно привязать к первому условию?
я не понимаю вопроса, но эти две строки должны быть последними в процедуре, а они у вас где-то в середине.

досрочное окончание цикла, если вы не в курсе - Exit For
...
Рейтинг: 0 / 0
15.12.2010, 23:10
    #37017132
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки в excel
Я вообще не очень врубаюсь в смысл того, что вы там делаете.
Зачем, к примеру, вы дважды открываете xlsFileName?
Зачем вы продолжаете цикл после закрытия файла?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / поиск ячейки в excel / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]