Именованный диапазон не может быть удален после небольшого изменения кода - PullRequest
2 голосов
/ 23 апреля 2019

Я недавно разделил свой код на две секции, чтобы остановить автоматический ввод даты, так как в понедельник нам нужно сделать данные за 3 дня

Все, что я сделал, это добавил новую подпрограмму и переопределилпеременные - теперь я не могу удалить именованный диапазон

Мой код:

Option Explicit
Sub Import()

Dim ws As Worksheet, lastRowC As Long

Set ws = Worksheets("Report")
lastRowC = ws.Cells(ws.Rows.Count, 3).End(xlUp).Row + 1 ' bottom populated cell of Column "C", plus 1

    With ws.QueryTables.Add(Connection:= _
            "TEXT;N:\Operations\001 Daily Management\Cemex\FMSQRY.CSV", Destination:= _
            ws.Cells(lastRowC, 3))
        .Name = "FMSQRY"
        ' etc
        ' etc
        .Refresh BackgroundQuery:=False
    End With

    With ActiveWorkbook
        .Connections("FMSQRY").Delete
        .Names("FMSQRY").Delete
    End With

End Sub




Sub TodaysDate()

Dim ws As Worksheet, lastRowC As Long, lastRowH As Long

Set ws = Worksheets("Report")

lastRowH = ws.Cells(ws.Rows.Count, 8).End(xlUp).Row + 1 ' bottom populated cell of Column "H", plus 1
lastRowC = ws.Cells(ws.Rows.Count, 3).End(xlUp).Row ' bottom populated cell of Column "C"

    With ws.Range(ws.Cells(lastRowH, 8), ws.Cells(lastRowC, 8))
        .FormulaR1C1 = "=TODAY()"
        .Value = .Value
    End With

End Sub

Так что ничего общего с именованным диапазоном фактически не коснулось

.Name = "FMSQRY"называет мой диапазон, но когда .Names("FMSQRY").Delete приходит в себя, я получаю 1004 Ошибка

Named Range

Debug


ОТВЕТ:

With ActiveWorkbook
    .Connections("FMSQRY").Delete
    With ws
        .Names("FMSQRY").Delete
    End With
End With

Ответы [ 3 ]

2 голосов
/ 23 апреля 2019

Ваше имя находится на уровне листа, а не на уровне книги. (Вы можете иметь одно и то же имя на разных листах)

так:

ActiveWorkbook.Worksheets("Report").Names("FMSQRY").Delete
2 голосов
/ 23 апреля 2019

Я не уверен, почему этот код не работает.

Но если вы напишите код, как показано ниже, он будет работать ...

Dim nm As Name
For Each nm In ActiveWorkbook.Names
    If nm.Name = "FMSQRY" Then nm.Delete
Next nm
1 голос
/ 23 апреля 2019

Попробуйте следующий код без .connections:

Option Explicit

Sub test()

    With ThisWorkbook
        .Names("FMSQRY").Delete
    End With

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