Refedit для возврата соответствующей строки и столбца - PullRequest
0 голосов
/ 29 февраля 2020

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

Что я хочу сделать, это когда я выбираю диапазон (например, E12: E16) через «Refedit1» в моей пользовательской форме, он должен возвращать начало и конец время для соответствующей строки (11:00 - 15:00 +1) и соответствующей даты в столбце (среда, 26.02.2020). Следующим шагом будет вставка этих значений непосредственно в 3 DTPickers, но это я могу сделать, когда получу возвращаемые значения. , Я думаю.

Я перепробовал все разные коды, которые нашел, и они всегда дают мне либо значение, которое находится в ячейке (в данном примере это ""), текстовую строку типа "sheet1 $ E $ 12 или когда Я использую Active.Cell, он возвращает ячейку, которая была активной до того, как я выбрал свой диапазон с помощью RefEdit.

Надеюсь, кто-то может указать мне правильное направление, я бы очень помог мне! Извините, что не смог загрузить оригинальный файл Excel, но в нем было много конфиденциальной информации ...

макет листа

enter image description here

макет пользовательской формы

enter image description here

Private Sub CommandButton2_Click()
 Dim rRange As Range
 Dim strAddr As String
 Dim bIsRange As Boolean
          'Get the address, or reference, from the RefEdit control.
          strAddr = RefEdit1.Value


          'Use IsObject to find out if the string is a valid address.
          On Error Resume Next
          bIsRange = IsObject(Range(strAddr))
          On Error GoTo 0

          If bIsRange = False Then 'Not Valid
            MsgBox "The range is not valid"
            RefEdit1.Value = vbNullString
            RefEdit1.SetFocus
            Exit Sub
          End If

          'Set the rRange Range variable to the range nominated by the
          'RefEdit control. If the Sheet name is also include (eg Sheet2!A1:A10)
          'It will act on that range, even if the sheet is not active at the time.
          Set rRange = Range(strAddr)

          ' gives the cell reference as a string
          MsgBox strAddr

                   With rRange
                '.Interior.ColorIndex = 16
                .Font.Bold = True
                '.BorderAround LineStyle:=xlContinuous, Weight:=xlThick
           End With
        If strAddr = "" Then
        'do nothing
        Else
        Range(strAddr).Value = UserForm1.ComboBox2.Value
        End If



End Sub

1 Ответ

2 голосов
/ 01 марта 2020

Вы можете прочитать дату и время следующим образом:

With rRange
    '.Interior.ColorIndex = 16
    .Font.Bold = True
    '.BorderAround LineStyle:=xlContinuous, Weight:=xlThick

    startTime = .cells(1).EntireRow.cells(2).Value

    endTime = .cells(.cells.count).EntireRow.cells(2).Value

    theDate = .cells(1).EntireColumn.cells(5).Value

End With
...