Notifications
Clear all

Criar uma plan no VBA com o nome que eu falar na Inputbox.

11 Posts
1 Usuários
0 Reactions
2,580 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Criei um botão para cadastrar uma turma.

Bom, ao clicar no botão, irá aparecer uma Inputbox perguntando o nome da turma, e o Excel criaria uma planilha com o nome igual ao da minha turma.

Queria fazer algo assim :

Sub Botão1_Clique()
Dim turma As String
turma = InputBox("Qual o nome da nova turma?")
Sheets.Add(turma) [/b
] ' (Eu sei que a sintaxe e o modo de usar não é assim, só estou falando que quero fazer algo mais ou menos assim, o nome que eu informar na Inputbox será o nome da Planilha criada.

'Alguém sabe?

End Sub

 
Postado : 11/05/2012 8:54 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não consigo editar o tópico, bom, já consegui uma solução, caso alguém tenha outra, favor postar abaixo. Conseguí assim :

Sub Botão1_Clique()
Dim turma As String
turma = InputBox("Qual o nome da nova turma?")
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = (turma)

End Sub

 
Postado : 11/05/2012 9:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Veja se te ajuda..

Sub AdicionarPlanilhaAleVBA()
Dim shName As String
shName = InputBox("Por favor digite o nome da Planilha")
If shName <> "" Then

Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = shName
End If
End Sub
 
Postado : 11/05/2012 9:22 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Muito boa ideia, Alexandre!

Nem tinha lembrado disso caso o valor seja vazio, eu tinha botado algo como On error resume next pra ignorar o erro, caso a pessoa cancelasse.

Então, meu projeto continua.

Nesse mesmo "Sub", tenho uma Inputbox que pergunta a quantidade de alunos nessa turma.

Vamos supor que tenho 28 alunos, então iria fazer com que A1:H29 ficassem com bordas.

Caso tenha 18 alunos, então iria fazer com que A1:H19 ficassem com bordas.

Primeiro eu fui tentar algo assim, mas não deu certo. kkkkkkkkkkkkkkkkk

alunos = InputBox("Quantos alunos esta turma possui?")
Range("A1:H & alunos").Select
comando que cria as bordas.

Como posso fazer isso?

 
Postado : 11/05/2012 9:49 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Se eu considerar sua necessidade e o título de seu tópico, então seu caso está resolvido!!..ao menos mereço uma mãozinha :lol:

Agora com sua nova dúvida eu preciso entender um pouco mais do que precisa, poderia detalhar melhor e postar toda sua rotina??

Att

 
Postado : 11/05/2012 10:05 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pronto, já cliquei na mãozinha. haha

É que, além do nome da turma, terei uma InputBox pra saber a quantidade de alunos.

E a quantidade de alunos será a quantidade de linhas + 1 (porque na primeira linha terá os campos).

Aí a macro irá selecionar e formatar com uma borda até a linha em do último aluno.

Por exemplo, se forem 28 alunos, irá formatar com borda até a linha 29 (no caso, de A1 até H29). Se forem 25 alunos, irá formatar com borda até a linha 26(no caso, de a1 até h26..

 
Postado : 11/05/2012 10:17 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Eu acredito que você deva mudar sua linha de raciocíneo.

A InputBox, é uma caixa de mensagem, então eu acho que deve ser um código dentro do evento Change, e não com InputBox.

Isso que fiz não faz sentido!!..mas faça um teste.

Sub BordasAle()
Dim ans As Long
ans = Application.InputBox("Quantas bordas?", "Adicionar Bordas", , , , , , 1)

With Range("A1:H" & ans)
    
    .Borders.LineStyle = xlContinuous
    .Borders.ColorIndex = 0
    .Borders.TintAndShade = 0
    .Borders.Weight = xlThin
    
End With
End Sub
 
Postado : 12/05/2012 8:44 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Realmente é algo assim que quero.

Ale, é vai ser chamada a partir do botão de cadastrar turmas, então, não tem evento Change.

Bom, usando seu código, ficaria assim :

Sub Retângulo1_Clique()
Dim ans As Long
ans = Application.InputBox("Quantos alunos?", "Alunos", , , , , , 1)

With Range("A1:H" & ans)
   
    .Borders.LineStyle = xlContinuous
    .Borders.ColorIndex = 0
    .Borders.TintAndShade = 0
    .Borders.Weight = xlThin
   
End With
End Sub

Só que eu quero que adicione UMA LINHA com borda a mais do que o informado na Inputbox.
Se eu informar 28 na Inputbox, ele adicionará 29 bordas.

 
Postado : 12/05/2012 9:24 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Então some um na definição da range

With Range("A1:H" & ans+1)

 
Postado : 12/05/2012 9:32 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Aff, já não posso mais editar.

Raciocinei um pouco e conseguí.

Obrigado, Alexandre! Já agradecí na mãozinha em todos os posts.

Sub Retângulo1_Clique()
Dim ans As Long
Dim total As Long
ans = Application.InputBox("Quantos alunos?", "Alunos", , , , , , 1)
total = ans + 1
With Range("A1:H" & total)
   
    .Borders.LineStyle = xlContinuous
    .Borders.ColorIndex = 0
    .Borders.TintAndShade = 0
    .Borders.Weight = xlThin
   
End With
End Sub
 
Postado : 12/05/2012 9:34 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

caso não haja mais dúvidas, favor marcar como resolvido!
Veja como em:
viewtopic.php?f=7&t=3784
Obrigado!!

 
Postado : 12/05/2012 9:47 am