powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / findnext(второй по счету?)
25 сообщений из 50, страница 2 из 2
findnext(второй по счету?)
    #37226997
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
justice85,
вызываю ФУНКЦИЮ так: call FoundSecond((WhatFound))
или по другому лучше?
Лучше ею не пользоваться. Т.к. в некоторых случаях она возвращает не то, что ожидаешь.
Вызов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim b As Long

' ищем строку "2"
b = FoundSecond("2")

If b =  0  Then
' не нашли 
   ' ... действия в случае неудачного поиска
Else
' нашли
   ' ... действия в случае удачного поиска
End If
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37227201
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justice85Shocker.Proсложно нажать кнопку "цитировать"?
почему после цитирования не большой как бы абзац. место много "берет".
Я просил нажать "цитировать", чтобы ты посмотрел наконец и научился оформлять код на форуме.
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37227210
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотищаПростой код, который "должен" найти строку последнего вхождения двойки в заданном диапазоне, сваливается в бесконечный цикл
а, ну я кому-то здесь решал уже такую задачку. просто проверял условие CurrentRow<PreviousRow
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37228080
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1,2,... до A13=13

при a=12, b=1 авторWorksheets(i).Range("B1")=Worksheets(i).Cells(a, b)

b1- пустая, до F5.
после F5 равна 12 и A12=12

но при
авторSet found = Worksheets(i).Range("a1:a10").Find("2", LookIn:=xlFormulas)
Set found = Worksheets(i).Cells.FindNext(After:=found)
a = found.Row'=12
b = found.Column'=1
Worksheets(i).Range(Cells(1, 1), Cells(a, b)) = Worksheets(i).Range(Cells(1, 2), Cells(12, 2))

F5 -> A1:A12 опустошается из за [B1:B12] = nothing
и вижу только 13

почему в первом коде (этого поста) A12 не опустошается?
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37228101
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justice85почему в первом коде (этого поста) A12 не опустошается?
1)
Worksheets(i).Range("B1")=
2)
Worksheets(i).Range(Cells(1, 1), Cells(a, b)) =

разницу видищь?
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37228448
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вижу.Имею ввиду:
Ячейки прировнять можно "B1 = Cell(a, b)". 'в итоге после F5, Cell(a, b) - не пустеет
А вот насчет диапазона "Cells(1, 2), Cells(12, 2) = Cells(1, 1), Cells(a, b)". 'F5, Cells(1, 1), Cells(a, b) - пустеет
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37228472
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не верю.
либо там еще формулы, либо еще код, либо что-то еще
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37228662
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНикогда не делай Cells() или Range(), всегда делай somesheet.Cells() или somesheet.Range()

где somesheet.Cells() - "на первый взгляд" для ячейки
как написать его же для ячеек?

Код:
авторDim found As Range
For i = 1 To 1
Set found = Worksheets(i).Range("a1:a10").Find("2", LookIn:=xlFormulas)
Set found = Worksheets(i).Cells.FindNext(After:=found)
a = found.Row: b = found.Column
Worksheets(i).Range(Cells(1, 1), Cells(a, b)) = Worksheets(i).Range(Cells(1, 2), Cells(12, 2))
'Worksheets(i).Range("B1")=Worksheets(i).Cells(a, b)
Next i
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37228999
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justice85для ячейки
как написать его же для ячеек?
Код: plaintext
Worksheets(i).Range(Cells( 1 ,  1 ), Cells(a, b))
пример из твоего же кода
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37229057
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот именно: после F5 кода:
Dim found As Range
For i = 1 To 1
Set found = Worksheets(i).Range("a1:a10").Find("2", LookIn:=xlFormulas)
Set found = Worksheets(i).Cells.FindNext(After:=found)
a = found.Row: b = found.Column
Worksheets(i).Range(Cells(1, 1), Cells(a, b)) = Worksheets(i).Range(Cells(1, 2), Cells(12, 2))
'Worksheets(i).Range("B1")=Worksheets(i).Cells(a, b)
Next i

Cells(1, 1), Cells(a, b) - пустеет т.е. на екселе ячейки А1:А12 - пустеют.
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37229072
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justice85Cells(1, 1), Cells(a, b) - пустеет т.е. на екселе ячейки А1:А12 - пустеют.
ну правильно, ты же копируешь в них содержимое ячеек B1:B12 - а в тех пусто. Чего ты ожидал?
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37229082
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И заметь - до этого ты привел другой код:
justice85А вот насчет диапазона "Cells(1, 2), Cells(12, 2) = Cells(1, 1), Cells(a, b)". 'F5, Cells(1, 1), Cells(a, b) - пустеет
вот на него я сказал - не верю. А с последним - все так и должно быть
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37230637
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro до этого ты привел другой код
да


авторпри
Worksheets(i).Range(Cells(1, 2), Cells(12, 2)) = Worksheets(i).Range(Cells(1, 1), Cells(a, b))
и при
Worksheets(i).Cells(a, b) = Worksheets(i).Range("B1")


одинаковые проблемы invalid procedure call or arg-nt



но мне интересно почему B1 не опустошает А12?
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37231118
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justice85но мне интересно почему B1 не опустошает А12?

блин
Код: plaintext
1.
2.
3.
4.
5.
Dim a As Integer, b As Integer
a =  5 
b =  7 

a = b
Как по твоему, чему будет равна переменная b после выполнения этого кода?
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37231319
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКак по твоему, чему будет равна переменная b после выполнения этого кода?
b=7
строка Worksheets(i).Range("B1")=Worksheets(i).Cells(a, b)
"по сути" равна
***Worksheets(i).Range(Cells(1, 2), Cells(1, 2)) = Worksheets(i).Range(Cells(a, b), Cells(a, b))
строка *** тоже работает, но
авторWorksheets(i).Range(Cells(1, 2), Cells(12, 2)) = Worksheets(i).Range(Cells(1, 1), Cells(a, b))
НЕ работает.
для диапазона ячеек - помогите
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37231366
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justice85авторКак по твоему, чему будет равна переменная b после выполнения этого кода?
b=7
ну то есть никакого "опустошения" b не происходит. Почему же должен "опустошаться" диапазон?

авторWorksheets(i).Range(Cells(1, 2), Cells(12, 2)) = Worksheets(i).Range(Cells(1, 1), Cells(a, b))
НЕ работает.
для диапазона ячеек - помогите
1) подставь вместо a, b конкретные значения
2) напиши уже, наконец, что именно не работает в этой строке (никакого "опустошения" диапазона из правой части происходить не должно)
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37231408
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
****Dim found As Range
For i = 1 To 1
Set found = Worksheets(i).Range("a1:a10").Find("2", LookIn:=xlFormulas)
Set found = Worksheets(i).Cells.FindNext(After:=found)
a = 12: b = 1
Worksheets(i).Range(Cells(1, 2), Cells(12, 2)) = Worksheets(i).Range(Cells(1, 1), Cells(a, b))
Next i

до Ф5 второй стобец пуст
после Ф5 должно быть: В1=1, В2=2, ... , В12=12

но код **** ничего не вставляет/меняет/работает
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37231445
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justice85,

10548425
Код: plaintext
Worksheets(i).Range(Cells( 1 ,  2 ), Cells( 12 ,  2 )).Value = Worksheets(i).Range(Cells( 1 ,  1 ), Cells(a, b)).Value
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37231483
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С 22 апр. [10551516] из-за всешо лишь слова value

(когда сам "страдал" этим правописанием). хм-хм блин.
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37231930
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37234282
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub first_1_3()

Dim a( 3 ), b( 3 )        
For i =  1  To  3 
        With Worksheets(i)
        Set found = .Range("a1:a10").Find("2", LookIn:=xlFormulas)'***
                a = found2.Row:        b = found2.Column
        
        .Range("B1:B2").Value = .Range(.Cells( 1 ,  1 ), .Cells(a(i), b(i))).Value
        
        End With
        Next i
End Sub


если после строки *** поставить строку
Код: plaintext
Set found2 = .Cells.FindNext(After:=found)

то код first_1_3 не работает
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37234463
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justice85код first_1_3 не работает

Надо угадать, что не работает?
файл выкладывай.
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37234672
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
justice85если после строки *** поставить строку...
Можно подумать, что если не поставить, то работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub first_1_3()

Dim a( 3 ), b( 3 )        
For i =  1  To  3 
        With Worksheets(i)
        Set found = .Range("a1:a10").Find("2", LookIn:=xlFormulas)'***
                a = found2.Row:        b = found2.Column
        
        .Range("B1:B2").Value = .Range(.Cells( 1 ,  1 ), .Cells(a(i), b(i))).Value
        
        End With
        Next i
End Sub
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37234925
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотищаМожно подумать, что если не поставить, то работает
а ведь я давал автору ссылку
...
Рейтинг: 0 / 0
findnext(второй по счету?)
    #37236289
justice85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
a = found2.Row
то что должно быть
Код: plaintext
a(i) = found2.Row
это достаточно очевидно

просто пока я в форуме спеша редактировал. а так у меня в коде было
Код: plaintext
a(i) = found2.Row

я уже сам решил вопрос с (10569678])
и этот код и без option explicit корректно работает.
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / findnext(второй по счету?)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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