Создание цикла из текста ячейки и удаление листов - PullRequest
1 голос
/ 11 января 2012

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

За последние пару месяцев я начал писать макросы в Excel, и я думаю, что можно зацикливаться на том, над чем я работаю, но я не совсем уверен, как на самом деле это сделать.

Я пытаюсь сделать две вещи:

  1. Я хочу вытащить текст из ячейки, которая также будет именем листа.
  2. Я хочу посмотреть и удалить листы с нулевым значением.

Вот что у меня сейчас:

If Range("L1").Value = 0 Then
    Application.DisplayAlerts = False
    Sheets("EA4A").Delete
    Application.DisplayAlerts = True
Else: Sheets("Sheet3").Select

Первые 3 строки проверяют извлеченные данные и удаляют лист (в идеале).Я хочу, чтобы EA4A вытащили из ячейки C1.Я также скопировал и вставил из L1 в L72, но это может меняться довольно регулярно.Имена листов перечислены в столбце C, поэтому я подумал, что, возможно, есть способ зациклить имена, проверить значение = 0 и удалить нули.

Опять же, я только начал пару месяцев назад, поэтому, если это просто ужасно, я готов учиться всему, что я могу улучшить.Я думал, что увидеть это в действии может помочь в этой точке, так как я провожу дни в Google, пытаясь понять это.

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Как это?

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim i As Long

    '~~> Change this to the relevant sheetname
    Set ws = Sheets("Sheet1")

    Application.ScreenUpdating = False

    On Error GoTo Whoa

    With ws
        For i = 1 To 72
            Application.DisplayAlerts = False

            If .Range("L" & i).Value = 0 Then _
            Sheets(.Range("C" & i).Value).Delete

            Application.DisplayAlerts = True
        Next i
    End With

LetsContinue:
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub
0 голосов
/ 11 января 2012

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

Надеюсь, это поможет.

'====Code 01===
Sub FindNames()

Dim i As String
Dim Ro As Integer

Range("A:B").ClearContents
i = ActiveSheet.Name
Ro = 1
    For Each Sh In Sheets
        On Error Resume Next
        Cells(Ro, 1).Value = Sh.Name
        Ro = Ro + 1
    Next Sh
End Sub

'====Code 02===
Sub DeleteSh()
Application.DisplayAlerts = False

Dim i As String
Dim Ro As Integer

i = ActiveSheet.Name
Ro = 1
    For Each Sh In Sheets
        On Error Resume Next
        If Cells(Ro, 2).Value = 0 Then Sh.Delete
        Ro = Ro + 1
    Next Sh

Application.DisplayAlerts = True

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