Neste 1º botão eu pergunto o número de empregos e randomizo o tempo para aqueles trabalhos entre 1 e 10 na coluna B.
Private Sub Button1_Click()
Worksheets("Sheet1").Activate
Range("A1").Value = "tarefa"
Range("B1").Value = "tempo"
Dim N As Long
N = Application.InputBox(Prompt:="N tarefas?(ex. 7 = 6 tarefas)", Type:=1)
If N > Rows.Count Then
N = Rows.Count
End If
For Z = 2 To N
Cells(Z, 1) = Z - 1
Cells(Z, 2) = WorksheetFunction.RandBetween(1, 10)
Next Z
Range("E1").Value = "total tarefas"
Range("E2").Value = N - 1
Range("E7").Value = "ultima celula em A"
Range("E8").Value = Range("A1").End(xlDown).Row
End Sub
Neste 2º botão encomendo os valores da coluna B do maior para o menor eu peço o número de máquinas e listar as máquinas que eu também determino o número de colunas que serão necessárias para serem feitas de acordo com as tarefas e o número de máquinas escolhidas.
Private Sub Button2_Click()
Worksheets("Sheet1").Activate
Columns("A:B").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("L1").Value = "máqs a usar?"
Dim N As Long
M = Application.InputBox(Prompt:="N maq?(ex. 3 = 2 maq)", Type:=1)
If M < 3 Then
M = 3
End If
If M > Columns.Count Then
M = Columns.Count
End If
Range("E4").Value = "total maqs"
Range("E5").Value = M - 1
For i = 2 To M
Cells(i, 12) = i - 1
Next i
Range("E10").Value = "colunas a fazer"
colunasAfazer = (Cells(2, 5) / Cells(5, 5))
Range("E11").Value = colunasAfazer
Range("E13").Value = "arredondamento"
Range("E14").Value = Round(Cells(11, 5) + 0.44)
arredondado = Range("E14").Value
For q = 1 To M
w = q + 1
O problema vem aqui. Estou tentando fazer com que o programa inicie na linha 2 (w = 2) coluna L ver se está vazio e se não está (porque terá as máquinas listadas lá) então vá para a coluna M e escreva o primeiro, segundo, terceiro e assim por diante maior número de coluna B para fazer apenas isso eu não tenho problema.
Select Case Cells(w, 12)
Case Is = ""
Case Else
Cells(w, 13) = WorksheetFunction.Large(Columns(2), q)
End Select
Next q
End Sub
O que tentei e não consegui fazer é que seja automático, em vez de ter que fazer o seguinte, o que funciona algumas vezes.
Select Case Cells(w, 12)
Case Is = ""
Case Else
Cells(w, 13) = WorksheetFunction.Large(Columns(2), q)
End Select
Select Case Cells(w, 13)
Case Is = ""
Case Else
Cells(w, 14) = WorksheetFunction.Large(Columns(2), w + M - 1)
End Select
Next q
End Sub
Alguém pode me ajudar a tornar essa parte automática para preencher as células necessárias com o valor q correto com qualquer número de tarefas e máquinas escolhidas?
Tags microsoft-excel vba