Отиди на
Форум "Наука"

Recommended Posts

  • Потребител

Задача над която се мъча вече 3 ден е следната :
Искам да присвоя макрос към даден бутон,който да извършва следното:

http://prikachi.com/images/563/6128563g.png
http://prikachi.com/images/564/6128564J.png


1 . Въвеждаме раб.№ в клетка Y271 и два телефона в съответните клетки К271 и К272

2 . Натискаме бутон " Запиши номерата"

3. В Sheet "телефони" работният номер да бъде намерен и съответно записани номерата в съответните клетки / в случая клетките за телефоните към раб.номер 5 са C2 i D2 /

4.След което въведените стойности в Y271 , К271 и К272 да бъдат изтрити


От всичко написано Аз мога единствено след записа да направя клетките - Y271 , К271 и К272 в Sheet "МАЙ 2013" да се изчистят от данните.

Дано съм обяснил както трябва проблема си.
Може би е по удачно това да се извършва с UserForm където да се въвеждат данните за запис.
Но и в двата случая не знам нужният макрос.

Редактирано от mehanika
Link to comment
Share on other sites

  • Потребител

Пробвай това...

Sub Button_Click()

Dim r As Range

Set r = Range("телефони!B2")

Do
Set r = Range("телефони!B:B").Find(Range("Y271").Value, After:=r, MatchByte:=True, MatchCase:=True)

If r Is Nothing Then
MsgBox "Value Not Found!", , "Search Ended"
Exit Sub
End If

Loop Until r.Value = Range("Y271").Value

Range("телефони!C" + Trim(Str(r.Row))).Value = Range("K271").Value
Range("телефони!D" + Trim(Str(r.Row))).Value = Range("K272").Value

Range("K271").Value = ""
Range("K271").Value = ""
Range("Y271").Value = ""

End Sub

Link to comment
Share on other sites

  • Потребител

Има известен проблем :

Ако въведеният номер в клетка Y271 съществува като номер в Sheet телефони - записа се осъществява и клетките се зануляват както трябва.

Ако обаче въведа номер 4 който го няма - Вместо да изведе съобщението "Value Not Found!"

зацикля на реда Set r = Range("телефони!B:B").Find(Range("Y271").Value, After:=r, MatchByte:=True, MatchCase:=True)

и програмата иска рестарт.

Пробвам с № 14 примерно - Всичко е ок !!!

Ето и какво изкарва ако стойноста в Y271 не съществува в списъка с раб.№ ра

http://prikachi.com/images/498/6133498I.png

при натискане на Debug - Set r = Range("телефони!B:B").Find(Range("Y271").Value, After:=r, MatchByte:=True, MatchCase:=True) става жълт

П.П Току що направих следното :

1.Направих друг файл в който разиграх ситуацията но направих списък с раб.№ само 4 на брой / 14 ,10,33,20 /

при въвеждане на 14,10,20 всичко е ок. При въвеждане на 8 ми изкарва съобщение "Value Not Found!"

Но при въвеждане на 3 , всичко зацикля - което ме навежда на мисълта ,че проблема става когато въведеният номер 3 се открие два или повече пъти в една клетка или това е №33

Или най-кратко казано при въвеждане на несъществуващ раб.№ примерно 6 - се извършва търсене и стойноста 6 се открива в клетки като 2660 или 1660 или 6666 - и проблема започва

Редактирано от mehanika
Link to comment
Share on other sites

  • Потребител

Може би това е решението - да се отиде на следващия ред и от там да се продължи търсенето. ;)

Sub Button_Click()

Dim r As Range
Dim r1 As Range

Set r = Range("телефони!B2")
Set r1 = r

Do
Set r = Range("телефони!B:B").Find(Range("Y271").Value, After:=r1, MatchByte:=True, MatchCase:=True)

If r Is Nothing Then
MsgBox "Value Not Found!", , "Search Ended"
Exit Sub
End If

Set r1 = Range("телефони!B" + Trim(Str(r.Row + 1)))

Loop Until r.Value = Range("Y271").Value

Range("телефони!C" + Trim(Str(r.Row))).Value = Range("K271").Value
Range("телефони!D" + Trim(Str(r.Row))).Value = Range("K272").Value

Range("K271").Value = ""
Range("K271").Value = ""
Range("Y271").Value = ""

End Sub

Link to comment
Share on other sites

  • Потребител

Не става, спира пак на същото място.Възможно ли е да се сложи условие стойността да съвпада с цялото съдържание на клетката ?

Имам предвид нещо като :

mathc entire cell contents - Съвпадение на цялото съдържание на клетката

Редактирано от mehanika
Link to comment
Share on other sites

  • Потребител

Ами то е сложено. Ето тук:

Loop Until r.Value = Range("Y271").Value

Но явно при теб не може да подмине реда на който намира съвпадение. При мен на Ексел 2003 работи перфектно.

Пробвай да смениш реда на който се прави търсенето с по-простото викане на метода Find:

Set r = Range("телефони!B:B").Find(Range("Y271").Value, After:=r1)

Дано стане. :)

Link to comment
Share on other sites

  • Потребител

Не стана :frusty2: Намира съвпадение във всеки номер който съдържа търсената цифра - А те може да са и 100.Изтрих работните номера и оставих само тези който в номера си имат само различни цифри.И оппп стана - изкарва ми съобщението за не намерен номер.Лошото е че раб.№ са с дублиращи числа в съдържанието си.

Ако натисна ctrl+f изкача прозореца за търсене - Там ако не укажеш да търси цялото точно съдържание на клетката - става същото прескача си от номер на номер :elvis:

Link to comment
Share on other sites

  • 2 седмици по-късно...
  • Потребител

И аз се блъскам с една задача от известно време.

Може да ви се стори лесна, но мен ме спъва.

Става въпрос за следното:

Имам таблица с 2 (може и повече колони)

В първата А2:А40 (много повече от 40 са всъщност) имам записани кодове, които съдържат букви, циври и спец. символи. SS/12345 (например)

Във втората В2:В40 имам цени.

Искам да вкарам код (като този във А колона) в клетка D2 и EXCEL да претърси А колона за съвпадение. Ако намери такова искам да сложи съответстващата му стойност от В колона в клетка Е2 (напимер), тоест, когато вкарам някакъв код и се окаже, че той съществува в А колона искан да изкарам съответната му цена.

С дуги думи: D2 e е променлива чрез която преравям А колона, а формулата ще бъде прикрепена към клетка Е2.

Тука следва да добавя, че в колона А записите са уникални и няма съвпадения. Т.е. след като намери първото съвпадение може да прекрати търсенето.

Ако нама съвпадения между вкарания запис в D2 и съдържанието на колона А нека да остави 0 в колоната за цена Е2

Tа това е с две дуи.

Благодаря предварително за помоща.

Айра

Редактирано от Ayra
Link to comment
Share on other sites

Напиши мнение

Може да публикувате сега и да се регистрирате по-късно. Ако вече имате акаунт, влезте от ТУК , за да публикувате.

Guest
Напиши ново мнение...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Зареждане...

За нас

Вече 15 години "Форум Наука" е онлайн и поддържа научни, исторически и любопитни дискусии с учени, експерти, любители, учители и ученици.

 

За контакти:

×
×
  • Create New...