Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Присвояване на стойности

Featured Replies

Мога ли да присвоя няколко стойности на една променлива. Т.е искам в екселски файл, да се търсят няколко стойности едновременно, например find = "Пловдив", "София,"Варна" , но възможно ли е икак се пише на VBA

На една променлива може да се присвоява една стойност. За работа с повече данни се използват масиви.

А по въпроса на търсенето, въпроса не е зададен правилно.

Как да се търсят данните. Данните, които се търсят къде да са разположени, само в една клетка или може в различни клетки да има различни данни, и не на последно място какви ще са действията с намерените съвпадения. Просто се чудя как да опиша ситуацията.

С подобни откъслечни питания няма как да се даде отговор.

 

  • Автор

Търсенето е в отделни клетки, а кокогато се намерят съвпадения ще се триият. Това е кода за търсене на една дума, а аз искам за няколко едновременно.

 

Dim fnd As String, FirstFound As String
Dim FoundCell As Range, Rng As Range
Dim myRange As Range, LastCell As Range
Dim xRows As Long
Dim xCol As Long
Dim colorLg As Long
On Error Resume Next

'What value do you want to find (must be in string form)?
  fnd = "СОФИЯ"
  'fnd = InputBox("I want to hightlight cells containing...", "Highlight")

Set myRange = ActiveSheet.UsedRange
Set LastCell = myRange.Cells(myRange.Cells.Count)
Set FoundCell = myRange.Find(What:=fnd, After:=LastCell)

'Test to see if anything was found
  If Not FoundCell Is Nothing Then
    FirstFound = FoundCell.Address
  Else
    GoTo NothingFound
  End If

Set Rng = FoundCell

'Loop until cycled through all unique finds
  Do Until FoundCell Is Nothing
    'Find next cell with fnd value
      Set FoundCell = myRange.FindNext(After:=FoundCell)
    
    'Add found cell to rng range variable
      Set Rng = Union(Rng, FoundCell)
    
    'Test to see if cycled through to first found cell
      If FoundCell.Address = FirstFound Then Exit Do
      
  Loop

'Select Cells Containing Find Value
  Rows(ActiveCell.Row).Select
  Rng.Select
  Rng.Interior.Color = RGB(255, 255, 0)
  
  MsgBox Rng.Cells.Count & " cell(s) were found containing: " & fnd
  
    
    colorLg = RGB(255, 255, 0)
    Application.ScreenUpdating = False
    With ActiveSheet.UsedRange
        For xRows = .Rows.Count To 1 Step -1
            For xCol = 1 To .Columns.Count
                           If .Cells(xRows, xCol).Interior.Color = colorLg Then
                    .Rows(xRows).delete
                    Exit For
                End If
            Next xCol
        Next xRows
    End With
    Application.ScreenUpdating = True
Exit Sub


'Error Handler
NothingFound:
  MsgBox "No values were found in this worksheet"

Find не поддържа такъв вид търсене.

Направи го в процедура за търсене и изтриване с входен параметър какво се търси, и за всеки елемент, който искаш да се търси извиквай процедурата.

Това е скелета на процедурата

Sub SearchAndDel(fnd As String)

 'тук сложи твоя код, като махнеш fnd As String от декларациите, защото ще се повтаря

end sub

А извикването ще става

Call SearchAndDel("София")

Call SearchAndDel("Пловдив")

и т.н.

 

Друг вариант може да бъде така - процедурата само да оцветява клетките и след всички видове търсения да се трият данните

 

Редактирано от TRN (преглед на промените)

Предполагам, че това е вариант от другите дискусии

Аз лично бих го направил по друг начин. Използвайки променливи, които са зададени там, например така

'Процедура за извикване 

Sub OpiDelChoicesRow()
 Call DelChoicesRow("София|пловдив") ' това | е разделител между данните, които ще се търсят 
End Sub

'Процедура за търсене и изтриване на редовете
Sub DelChoicesRow(SearchData As String)
 Dim MyArr As Variant
 Dim I As Integer
 Dim DataSearch As Range
 Dim Rng As Range, MyRange As Range
 Dim LastRow As Long
 Dim Mask As Boolean
 LastRow = LastRowInOneColumn(SearchColumn)
 If LastRow < NaRow Then Exit Sub
 If Len(SearchData) < 1 Then Exit Sub
 MyArr = Split(SearchData, "|") ' | същия разделител, може да бъде всякакъв символ, но да не се среща някъде в данните, които ще се търсят
 Set DataSearch = Range(SearchColumn & NaRow & ":" & SearchColumn & LastRow)
 For Each Rng In DataSearch
  Mask = False
  For I = LBound(MyArr) To UBound(MyArr)
   Mask = Mask Or UCase(Rng.Value) Like "*" & UCase(MyArr(I)) & "*"
   If Mask Then Exit For
  Next
  If Mask Then
   If MyRange Is Nothing Then
    Set MyRange = Range(Rng.Row & ":" & Rng.Row)
   Else
    Set MyRange = Application.Union(MyRange, Range(Rng.Row & ":" & Rng.Row))
   End If
  End If
 Next
 If MyRange Is Nothing Then
 Else
  MyRange.Delete Shift:=xlUp
 End If
End Sub

 

  • Автор
преди 17 часа, TRN написа:

Find не поддържа такъв вид търсене.

Направи го в процедура за търсене и изтриване с входен параметър какво се търси, и за всеки елемент, който искаш да се търси извиквай процедурата.

Това е скелета на процедурата

Sub SearchAndDel(fnd As String)

 'тук сложи твоя код, като махнеш fnd As String от декларациите, защото ще се повтаря

end sub

А извикването ще става

Call SearchAndDel("София")

Call SearchAndDel("Пловдив")

и т.н.

 

Друг вариант може да бъде така - процедурата само да оцветява клетките и след всички видове търсения да се трият данните

 

Така стана! Мноооооооого благодаря!

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    26%
    Дарени 256.00 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.