Squeak.ru - шаблоны программирования

Обход ошибок в порядке ячеек в диапазоне

У меня есть функция, которая просматривает календарь и устанавливает воскресенье и субботу в зависимости от их номера столбца. Затем я установил диапазон на одну неделю (с воскресенья по субботу).

Моя проблема в том, что когда цикл достигает субботы, две ячейки в диапазоне set week, кажется, поменялись местами, таким образом выбирая с субботы по воскресенье.

Как мне обойти это?

For colNum = 4 To 100
    Set currentCell = .Cells(rowNum, colNum)
    Set otCell = currentCell.Offset(-1, 0)
    Set regCell = currentCell.Offset(-2, 0)

    If colNum Mod 7 = 4 Then
        sun = colNum
    End If

    If colNum Mod 7 = 3 Then
        sat = colNum
    End If

    Set week = .Range(.Cells(rowNum, sun), .Cells(rowNum, sat))
    week.Select
Next colNum
23.01.2018

Ответы:


1

Честно говоря, очень сложно понять, что вы имеете в виду. Однако будем надеяться, что вы строите какой-то причудливый календарь, который начинается с 5-го столбца и вам нужно разделить недели. Например. примерно так (в цветах будет проще):

введите здесь описание изображения

Ваш код должен выполнять какое-то действие (в вашем случае выбор, в моем случае окрашивание диапазона), когда он определил последний день недели (в нашем случае суббота). Во всех остальных случаях цикл должен продолжаться. Таким образом, попробуйте это:

Public Sub TestMe()

    Dim colNum  As Long
    Dim week    As Range
    Dim sun     As Long
    Dim sat     As Long

    Dim bColor  As Boolean

    For colNum = 4 To 100
        If colNum Mod 7 = 4 Then
            sun = colNum
        ElseIf colNum Mod 7 = 3 Then
            sat = colNum
            Set week = Range(Cells(1, sun), Cells(200, sat))
            bColor = Not bColor
            If bColor Then
                week.Interior.Color = vbRed
            Else
                week.Interior.Color = vbGreen
            End If
        End If
    Next colNum
End Sub

Редактировать:

Чтобы заставить ваш код работать, попробуйте следующее:

If sat-sun <> 1 Then
    Set week = .Range(.Cells(rowNum, sun), .Cells(rowNum, sat))
    week.Select
End If
23.01.2018
  • Вы правильно поняли мой вопрос. Моя проблема в том, что после правильного выбора первой недели моя функция распознает субботу-воскресенье как неделю и выбирает ее. Таким образом, в вашем примере после правильного выбора первой недели (красного) будет выбран последний столбец красного цвета и первый столбец зеленого цвета вместо выбора зеленого. 23.01.2018
  • @jiwanheo, почему бы тебе не использовать мой пример? В любом случае, смотрите правку. 23.01.2018
  • Я сделал на самом деле! Размещение недели Set внутри ElseIf решило эту проблему. Спасибо 23.01.2018
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...