Использование окна сообщений для изменения цвета шрифта диапазона?И выбор листа? - PullRequest
0 голосов
/ 15 марта 2019

У меня написан макрос, который делает несколько вещей. Он запрашивает ваше имя и фамилию, помещает их в ячейки, окрашивает пару ячеек, перечисляет сегодняшнюю дату и даты через месяц, через 2 месяца, ... и через 12 месяцев. Я перестану объяснять это там, потому что это - то, где моя проблема входит.

Мне нужно использовать окно сообщения y / n, чтобы спросить пользователя, хотят ли они, чтобы первые 6 дат были окрашены в красный цвет, и еще один вопрос, хотят ли они, чтобы последние 6 дат были окрашены в синий цвет. Если они выберут да для первой, я выделю эти 6 дат и поменяю шрифт. То же самое для синего. Довольно просто.

Я получаю всплывающие окна с сообщениями, но когда я выбираю да - без изменений в шрифтах. Код просто продолжает двигаться дальше. Проблема начинается со строки «ColorAsk = MsgBox ...»

Sub FirstTrial()
'
' FirstTrial Macro
'
' Keyboard Shortcut: Ctrl+Shift+W
'
    Dim FirstName As String
    Dim LastName As String
    Dim Range1 As Range, Data1 As Range
    Dim ColorsAsk As VbMsgBoxResult
    Dim ColorsAsk2 As VbMsgBoxResult
    FirstName = InputBox("Please enter your first name")
    LastName = InputBox("Please enter your last name")
    Range("A1").Select
    ActiveCell.Value = "First Name:"
    Range("A2").Select
    ActiveCell.Value = "Last Name:"
    'Range("B6").Select
    Columns("A:A").EntireColumn.AutoFit
    Range("B1").Select
    ActiveCell.Value = FirstName
    Range("B2").Select
    ActiveCell.Value = LastName
    Range("A1:A2").Select
    Selection.Font.Bold = True
    Range("B1:B2").Select
    With Selection.Interior 'Puts With in front of each of the following lines
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent2
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A3").Select
    ActiveCell.Value = "=TODAY()"
    Set Range1 = Range("A4:A15")
    For Each Data1 In Range1
        Data1 = "=EDATE(R[-1]C,1)"
        Data1.Select
        With Selection
            .NumberFormat = "m/d/yy"
        End With
        Next Data1
    ColorsAsk = MsgBox("Would you like the first 6 months colored red?", vbYesNo + vbDefaultButton1, "Coloring")
        If ColorAsk = 6 Then
        Range("A4:A9").Font.Color = vbRed
        End If
    ColorsAsk2 = MsgBox("Would you like the latter 6 months colored blue?", vbYesNo + vbDefaultButton1, "Coloring")
        If ColorAsk2 = 6 Then
        Range("A10:A15").Font.Color = vbBlue
        End If
    Worksheets.Add Before:=Worksheets(1)
    ActiveSheet.Name = FirstName
    Sheets(FirstName).Range("A1:A13").Value = Sheets("Sheet1").Range("A3:A15").Value

End Sub

И второй вопрос - не совсем необходимый, но помог бы узнать .... Вторым, последним, что делает этот код, является создание рабочего листа с именем, которое вы вводите в качестве своего имени. Последнее, что должен делать этот код, - это скопировать календарь из исходного листа и вставить его во вновь созданный лист. Прямо сейчас я делаю это при условии, что исходный лист будет называться «Лист1». Есть ли способ сделать это независимо от того, как называется исходный лист?

...