Как получить номер строки для моей ячейки с помощью VBA - PullRequest
0 голосов
/ 20 сентября 2018

Итак, у меня есть следующие слова в двух столбцах, и я пытаюсь создать поле ввода, в котором я нахожу слово и извлекаю его, а также номер строки.Я мог сделать это один раз, но теперь он продолжает давать мне ошибку отладки, которую я не могу понять.

Любая помощь будет оценена (в идеале не нужно будет менять большую часть кода: P)

The     any
Quick   of
Brown   my
Fox     lazy
jumps   dogs
Over

Option Explicit
Option Base 1
Sub AddMessage()
Dim i As Integer, j As Integer, HT As Variant, nr As Integer, nc As Integer, c As Integer, rng1 As Range, rng2 As Range, row As Integer, rows As Integer
nr = Selection.rows.Count
nc = Selection.Columns.Count
HT = InputBox("Enter column letter:")
Set rng1 = Range("E1:E100")
Set rng2 = Range("F1:F100")
For i = 1 To nr
    For j = 1 To nc
        If ActiveCell(i, j) = HT Then
            Selection.Cells(i, j - 4) = HT
                 If Cells(i, 1).Value = HT Then
                    row = Application.WorksheetFunction.match(HT, rng1, 0)
                    Selection.Cells(i, j - 2) = row
                Else
                  If Cells(i, 2).Value = HT Then
                    rows = Application.WorksheetFunction.match(HT, rng2, 0)
                    Selection.Cells(i, j - 2) = row
               End If
        End If
Next j
Next i
End Sub

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Не знаю, понадобится ли в вашем случае выделение (я рекомендую этого не делать), вот еще один фрагмент кода без 'activecells' и 'selections'

Sub tst()
Dim HT As String, Rng As Range
    HT = InputBox("Give word to find:")
    If Trim(HT) <> "" Then
        With Sheets("Sheet1").Range("E1:F100")'assume your data is on Sheet1
            Set Rng = .Find(What:=HT, After:=.Cells(.Cells.Count), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
            If Not Rng Is Nothing Then
               Sheets("Sheet1").Cells(Rng.Row, 2) = Rng.Value: Sheets("Sheet1").Cells(Rng.Row, 4) = Rng.Row
            Else
                MsgBox "No words found"
            End If
        End With
    End If

End Sub
0 голосов
/ 20 сентября 2018

вам не хватало End If

правильного отступа, который бы помог вам разобраться:

Sub AddMessage()
    Dim i As Integer, j As Integer, HT As Variant, nr As Integer, nc As Integer, c As Integer, rng1 As Range, rng2 As Range, row As Integer, rows As Integer
    nr = Selection.rows.Count
    nc = Selection.Columns.Count
    HT = InputBox("Enter column letter:")
    Set rng1 = Range("E1:E100")
    Set rng2 = Range("F1:F100")
    For i = 1 To nr
        For j = 1 To nc
            If ActiveCell(i, j) = HT Then
                Selection.Cells(i, j - 4) = HT
                If Cells(i, 1).Value = HT Then
                    row = Application.WorksheetFunction.Match(HT, rng1, 0)
                    Selection.Cells(i, j - 2) = row
                Else
                    If Cells(i, 2).Value = HT Then
                        rows = Application.WorksheetFunction.Match(HT, rng2, 0)
                        Selection.Cells(i, j - 2) = row
                    End If '<<<=== missing End If
                End If
            End If
        Next j
    Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...