2015-01-07 2 views
-4

Может ли кто-нибудь помочь мне в следующем: если пользователь ставит «10» в B6 на лист под названием «Данные», тогда B7 вниз будет подсчитывать до число, например B7 будет «1», B8 будет «2», B9 будет «3» и так далее.
Затем пользователь помещает значение справа от этих чисел и нажимает кнопку на экране, из листа шаблона, называемого «ML», создаются следующие новые листы.
, например. B6 - «1», а C6 - «3», тогда создаются 4 листа (копия «ML») под названием «1.1», «1.2» и «1.3» B7 «2», а C7 - «5», затем 5 листов созданы (копию "ML") под названием "2.1", "2.2", "2.3", "2.4" и "2.5"Создание списка из числа, а затем создание листинга из списка

иллюстрирующее проблему

enter image description here

+0

Пожалуйста, дайте ему лучший снимок и попросите о помощи, если у вас возникнут проблемы, которые вы не можете решить (после проведения исследований). –

+0

[Изображение вопроса] (http://imgur.com/MeIp3KD) –

+0

Ваше изображение не соответствует вашему описанию. Должен ли пользователь набирать номер в B6 или A6? Являются ли начальные ряды чисел начальными B7 или B6? – Jeeped

ответ

0

Я обработал весь код в одном макросе события Worksheet_Change. Это может быть более автоматическим, чем вы предполагали. Следует добавить контроль ошибок, чтобы не пытаться создать рабочий лист с дублирующимся именем.

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Count > 1 Then Exit Sub 
    If Target.Address = "$B$6" Then 
     Application.EnableEvents = False 
     With Target.Offset(1, 0) 
      Range(.Cells(1), .Cells(1).End(xlDown)).ClearContents 
      .Value = 1 
      .Resize(Target.Value, 1).DataSeries _ 
       Rowcol:=xlColumns, Type:=xlLinear, Step:=1 
     End With 
     Target.Offset(0, 1).Activate 
    ElseIf Not Intersect(Target, Columns("C")) Is Nothing Then 
     If Target.Row > 6 And Application.Count(Target.Offset(0, -1).Resize(1, 2)) = 2 Then 
      On Error GoTo Fìn 
      Application.EnableEvents = False 
      Dim w As Long 
      For w = 1 To Target.Value 
       Sheets.Add(after:=Sheets(Sheets.Count)).Name = _ 
        Target.Offset(0, -1) & Chr(46) & w 
      Next w 
      Me.Activate 
     End If 
    End If 
Fìn: 
    Application.EnableEvents = True 
End Sub 

Если вы предпочитаете кнопку, чтобы создать дополнительные рабочие листы и возникают проблемы с отшелушивающим соответствующую часть кода, отправьте обратно, показывая свои собственные усилия (учитывая любую линию, которая генерирует ошибку). Как отмечалось выше, контроль ошибок для дублированных имен рабочих листов должен быть определен.

+0

Спасибо @Jeep, но мне все еще не удается получить его, чтобы скопировать лист (использовать его в качестве шаблона), а затем дать ему имя «Unit 1.1». 'Таблицы (« Единица »). Копировать (после: = Листы (Таблицы. Состав)). Имя = _ Target.Offset (0, -1) & Chr (46) & w' –

Смежные вопросы