2015-01-20 2 views
1

Добрый день!Инкремент VBA. Для прохода через командную кнопку

В настоящее время у меня небольшая проблема с командной кнопкой, и я хотел бы иметь возможность сделать следующее: отформатировать определенную строку до определенной высоты строки, добавить толстые границы в определенное количество ячеек в этом одну и ту же строку и подсчет и добавление количества произведенных таким образом строк к исходному номеру в файле. В принципе, кнопка должна позволить пользователю листа с расширенными данными добавлять новую строку с определенным форматированием, в которое пользователь будет вводить данные и отслеживать количество добавленных строк.

Мой текущий код стоит как:

Option Explicit 

Private Sub NewLineRedButton_Click() 

    Dim i As Long 
    Dim y As Long 

    For y = ThisWorkbook.Worksheets("Flags").Cells(16.3) To y + 1 
     ThisWorkbook.Worksheets("Flags").Cells(16, 3) = y + 1 
     For i = 20 To i + y Step 1 
      ThisWorkbook.Worksheets("Flags").Rows(i).RowHeight = 45 
      ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.LineStyle = xlContinuous 
      ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.Weight = xlMedium 
     Next 
    Next 

End Sub 

На данный момент код выполняет только две строки ниже и останавливается. Я не совсем уверен, почему ...?

+0

возможно, потому что некоторые из значений жестко запрограммированы? –

+0

Я не знаю, что вы подразумеваете под жестким кодом. У меня нет знаний о программировании, я удивительно невежественен, но хочу учиться. – BOB

+0

@BOB, так что особенное о 'Cells (16, 3)'? Ака 'C16'? – Chrismas007

ответ

0

Запись для цикла как этот

For y = ThisWorkbook.Worksheets("Flags").Cells(16.3) To y + 1 

так же, как писать его как этот

For y = ThisWorkbook.Worksheets("Flags").Cells(16.3) To 1 

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

Вам нужно что-то вроде

lEndRow = lStartRow + (lRowCount - 1) 
For y = lStartRow to lEndRow 
+0

Я не уверен в логике вашего кода. Вот что я понимаю: Я должен создать переменную, которая является конечной строкой (lEndRow). Я должен создать переменную, которая является стартовой строкой (lStartRow). Затем, используя функцию Row.Count, цикл цикла работает в зависимости от количества строк ...? – BOB

+0

Я не думаю, что мне нужна стартовая строка, так как все, что мне нужно знать, это то, где последняя строка находится на листе, чтобы я мог плюс новую строку под ней. Спасибо за помощь! – BOB

+0

Если вам нужна последняя строка на листе, сохраните это значение. Когда вы вставляете новую строку, добавьте ее в значение. Это избавит вас от беспокойства о количестве строк и т. Д. –

0

я это собираюсь хорошо сейчас. Просто не могу заставить его делать все столбцы с правильными границами ... Я не уверен, как их называть при использовании ячеек (#, #), и я не вижу, как использовать Range (' «Z #, Z #» ') нотации с моей переменной я, являющейся долго ...

Любом: вот результат до сих пор:

Option Explicit 

Private Sub NewLineRedButton_Click() 

     Dim i As Long 
     Dim y As Long 
     Dim RowEnd As Long 


     RowEnd = ThisWorkbook.Worksheets("Flags").Cells(Rows.Count, 1).End(xlUp).Row 

    For y = 19 To RowEnd 
     ThisWorkbook.Worksheets("Flags").Cells(16, 3) = y - 17 ' First row which is already on the sheet is on row 19, first row appearing by button clicking is on row 20 and the program is counting the header hence the y - 17 for the value of the number of rows. 
     For i = 19 To RowEnd + 1 Step 1 
      ThisWorkbook.Worksheets("Flags").Rows(i).RowHeight = 45 
      ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.LineStyle = xlContinuous 
      ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.Weight = xlMedium 

     Next 
    Next 

End Sub 

Спасибо за помощь и идеи, наконец, шевелил вокруг и нашел другие ресурсы из приведенных здесь указаний.

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