Как перейти на конкретный лист? - PullRequest
0 голосов
/ 23 мая 2019

Итак, я написал макрос, который вставляет новый столбец в каждый рабочий лист, кроме первого. Работает просто отлично. Моя единственная проблема в том, что я бы хотел, чтобы он вернулся к листу, на котором я начал, после завершения последнего листа. Все решения, которые я нашел в Интернете, гласили, что строка: Sheets («Название листа»). Select должна сделать дело. Однако это не делает это для меня. Что я делаю неправильно? Буду также признателен за предложения по улучшению кода.

Option Explicit

Sub NeueSpalte()

    Dim ende As Boolean
    Dim Name As Variant
    Dim Anzahl_WS As Integer
    Dim Zaehler As Integer

    Do While ende = False     
        Name = InputBox("Name der neuen Spalte")
        If StrPtr(Name) = 0 Then
            MsgBox ("Abgebrochen!")
            Exit Sub

        ElseIf Name = "" Then
            MsgBox ("Bitte etwas eingeben")

        Else
            Exit Do

        End If
    Loop

        Anzahl_WS = ActiveWorkbook.Worksheets.Count - 1  

        Sheets("Rechte auf Verträge der A3").Select

        Application.ScreenUpdating = False

            For Zaehler = 1 To Anzahl_WS

                Cells(1, 2).EntireColumn.Copy
                Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).Activate
                ActiveCell.EntireColumn.Insert
                Application.CutCopyMode = False

                Cells(1, Columns.Count).End(xlToLeft).Activate                              
                ActiveCell.EntireColumn.Select
                Selection.ClearContents


                Cells(8, 2).MergeCells = False                                              
                Cells(1, Columns.Count).End(xlToLeft).Offset(7, 1).Activate
                Range(Cells(8, 2), ActiveCell).MergeCells = True

                Cells(8, 2).Select                                                          
                    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                    With Selection.Borders(xlEdgeLeft)
                        .LineStyle = xlContinuous
                        .ColorIndex = 0
                        .TintAndShade = 0
                        .Weight = xlThin
                    End With
                    With Selection.Borders(xlEdgeTop)
                        .LineStyle = xlContinuous
                        .ColorIndex = 0
                        .TintAndShade = 0
                        .Weight = xlMedium
                    End With
                    With Selection.Borders(xlEdgeBottom)
                        .LineStyle = xlContinuous
                        .ColorIndex = 0
                        .TintAndShade = 0
                        .Weight = xlMedium
                    End With
                    With Selection.Borders(xlEdgeRight)
                        .LineStyle = xlContinuous
                        .ColorIndex = 0
                        .TintAndShade = 0
                        .Weight = xlMedium
                    End With
                    Selection.Borders(xlInsideVertical).LineStyle = xlNone
                    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

                Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).Value = Name

                    If ActiveSheet.Name = "Rechte auf Verträge der WW" Then                 
                        Exit Sub
                    Else
                        ActiveSheet.Next.Select
                    End If

            Next Zaehler

            Application.ScreenUpdating = True

            Sheets("Rechte auf Verträge der A3").Select

End Sub

ожидаемый результат: скопируйте столбец b в первый пустой столбец, удалите его содержимое и вставьте выбранное пользователем имя в строку 1 нового столбца. Сделайте это для каждого листа и вернитесь к листу № 2

фактический результат: все отлично, но не переходит на лист 2

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Небольшой пример:

Option Explicit

Sub Select_Sheet()

    'Declare the variable
    Dim ws1 As Worksheet

    'Set the variable
    Set ws1 = ThisWorkbook.Worksheets("Sheet1")

    'Create a with statement to avoid repetition
    With ws1
        'Refer to range A1
        .Range ("A1")
        'Refer to the value of range A1
        .Range("A1").Value
    End With

End Sub

Обратите внимание, что при создании With Statement используемые диапазоны должны иметь точку "."до ранга .Range("A1").Value

0 голосов
/ 23 мая 2019

Я понял это. Проблема была в конце цикла for, внутри ветки if я написал 'Exit Sub', если он находится на последнем листе. Я просто поставил «Листы» («Rechte auf Verträge der A3»). Выбрать »перед« Exit Sub »

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