(VBA) Tentando e não conseguindo q valores M de columm B para columm 12 e além

0

Atualmente, tenho isto:

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?

    
por Alex Silva 17.11.2017 / 12:54

0 respostas