Построить дату и время со значением смещения выбранного диапазона, чтобы определить диапазон времени От и До - PullRequest
0 голосов
/ 16 октября 2019

Я работаю над проектом, для которого я создал небольшой образец.

Описание

Я хочу разрешить пользователю три действия , когда ему / ей разрешено выбирать 3 разных диапазона ячеек один за другим. После выбора первого диапазона будет запущен макрос, в который будут записаны 4 вещи: FromValue, ToValue, TimeDiff & CABIN и дамп этих четырех значений в Sheet2 в табличном формате. Затем следующий диапазон будет выбран пользователем (второе действие), а значения будут сброшены ниже предыдущего, а затем третье действие. Я прилагаю картинку, чтобы продемонстрировать, что мне нужно захватить и сбросить.

Отключенный вывод = Лист2 должен выглядеть следующим образом после трех действий

01-Oct-2019 00:15 | 01-Oct-2019 01:00 | 00:45 | CABIN 1         
01-Oct-2019 23:15 | 02-Oct-2019 01:00 | 01:45 | CABIN 2         
02-Oct-2019 23:15 | 02-Oct-2019 23:30 | 00:15 | CABIN 2

Настройка

  • Ячейка B2 содержит месяц и год вmmm-yyyy формат.
  • Оставшиеся ячейки в строке 2 будут иметь даты от 1 до 28/29/30/31 в зависимости от
  • , какой это месяц.
  • Строка3 будет иметь значения времени
  • Следующие строки будут иметь имена кают

Условия

  1. Перед запуском макроса следует проверить, выбран ли диапазон. Если нет, то появляется ошибка «Выбор временного диапазона»
  2. . Затем следует проверить, что выбранные ячейки не имеют цвета фона, чтобы убедиться, что это не выбранная ячейка, чтобы избежать наложения. Если условие не выполнено, должна появиться ошибка «Ячейки уже отмечены»
  3. . Когда первое условие выполнено, оно должно закрасить диапазон желтым цветом, захватить требуемые значения и выгрузить данные в Лист 2
  4. Если несколькодиапазоны выбираются, тогда должна появиться ошибка «Выберите только один диапазон»
  5. Если ячейки выбраны за пределами области выбора (в данном примере область выбора C4: T5, то должна появиться ошибка «Неправильный выбор»

Вот что я пытался, но у меня кончились проблемы, для которых мне нужна помощь.

Sub CaptureAndDump()
    Dim FromValue As Double
    Dim ToValue As Double
    Dim TimeDiff As Double
    Dim Cabin As String
    Dim slot As String
    Dim c As Excel.Range
    slot = Selection.Address
    Dim DataSheet As Worksheet
    Dim AppendRow As Long
    Set DataSheet = Sheets("Data")
    AppendRow = DataSheet.Cells(DataSheet.Rows.count, "A").End(xlUp).Row + 1
    If Len(slot) < 7 Then
        MsgBox "Select a work slot"
        Exit Sub
    ElseIf InStr(slot, ",") > 0 Then
        MsgBox "Multiple slots not allowed. Select only one slot"
        Exit Sub
    ElseIf Selection.Rows.count > 1 Then
        MsgBox "Selection of multiple cabins not allowed"
        Exit Sub
    Else
        For Each c In Selection
            If c.Interior.ColorIndex > 0 Then
                MsgBox "Selected slot already marked"
                Exit Sub
            End If
        Next c
    End If
    FromValue = ActiveSheet.Cells(2, Selection.Column)
    ToValue = ActiveSheet.Cells(2, Selection.Column + Selection.Columns.count - 1)
    TimeDiff = ToValue - FromValue
    Cabin = Range("B" & Selection.Row).Value
    DataSheet.Range("A" & AppendRow).Value = Format(FromValue, "dd-mmm-yyyy hh:mm:ss")
    DataSheet.Range("B" & AppendRow).Value = Format(ToValue, "dd-mmm-yyyy hh:mm:ss")
    DataSheet.Range("C" & AppendRow).Value = Format(TimeDiff, "hh:mm")
    DataSheet.Range("D" & AppendRow).Value = Cabin
    Selection.Interior.ColorIndex = 6
    Selection.BorderAround ColorIndex:=1
    ActiveCell.Select
    'Dont know how to code condition no.5 <= Need Assistance
    'Rest of the code not yet tried
End Sub

sample image

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...