Macro deschidere foaie

Macro deschidere foaie

Mesajde maryurs24 » Joi Dec 14, 2017 3:40 pm

Buna seara

Am un workbook cu mai multe foi
In prima foaie(foaia "INTRODUCERE") folosesc doar 2 celule: E7 si E8
Vreau sa fac un macro care sa-mi deschida foaia al carui nume este= cu valoarea din celula E7 din prima foaie si sa-mi copieze valoarea din celula C8 in primul celula goala din coloana B
Folosesc codul asta

Cod: Selectaţi tot
Sub Stoc()

Dim wkSht As Worksheet
For Each wkSht In Sheets
If ActiveSheet.Range("E7").Value = wkSht.Name Then
 ActiveSheet.Range("E8").Copy Destination:=wkSht.Range("B" & Rows.Count).End(xlUp).Offset(1, 0)

    Sheets("INTRODUCERE").Select
    Range("E7:E8").Select
    Selection.ClearContents
    Range("E7").Select

 End If
Next
End Sub


Am urmatoarele probleme
1-daca nu exista foaie cu numele care trebuie, macro nu face nimic si nu stiu ca nu gaseste. am incercat sa bag un elseif inainte de endif, sa apara un MsgBox dar nu stiu cum sa scriu in cod " elseif ActiveSheet.range("E7").value <> wkSht.Name " si imi apare mesajul indiferent daca exista foaie sau nu
2-daca in foaia destinatie, pe coloana B, ultimul rand completat este 8, va scrie in 9 chiar daca randuri intermediare sunt goale(daca B5 este goala ) cum pot rezolva aceste probleme?

Multumesc
Ultima oară modificat de IPP pe Joi Dec 14, 2017 3:58 pm, modificat 1 dată în total.
Motiv: Inlocuire majuscule
maryurs24
 
Mesaje: 6
Membru din: Joi Feb 21, 2013 8:34 am

Re: Macro deschidere foaie

Mesajde IPP » Joi Dec 14, 2017 4:29 pm

Buna seara

Scrierea unui text folosind doar majuscule este interpretabila. Am corectat textul dar pe viitor va rugam sa evitati acest lucru.

1. In macro apar mai des situatii de "Case Sensitive" asa ca primul lucru pe care va trebui sa il verificati este modalitatea in care e scrisa denumirea foii in E7 vs. numele foii. Asadar sheet3 <> Sheet3. Se poate evita acest lucru punand in cod o convertire a numelor implicate la majuscule/minuscule. ex.
Cod: Selectaţi tot
If UCase(sh.Name) = UCase(Worksheets("INTRODUCERE").Range("E7").Value)

Probleme mai pot sa apara daca indiferent in ce parte s-a mai strecurat cate un caracter netiparibil (ex. un spatiu suplimentar) in denumire.

2. Daca prin "ultimul rand completat" de fapt se intelege prima celula goala din zona B1:Bn atunci va trebui intercalat un cod suplimentar care sa testeze fiecare celula in parte inainte. Fara un fisier exemplu eu evit sa fac propuneri pentru ca sunt "sanse" sa mai fie cate ceva care conteaza si s-a omis in enuntul problemei.

Altfel, ca structura a codului, as merge pe varianta:

Cod: Selectaţi tot
Sub WriteInfo()

Dim sh As Worksheet
Dim vbGasit As Boolean
 vbGasit = False

For Each sh In ThisWorkbook.Worksheets
 If sh.Name = Worksheets("INTRODUCERE").Range("E7").Value Then
  vbGasit = True
 
  'cod gasire celula goala si scriere info
  '.....de facut
  '....
 
  Exit For
 End If

Next sh

If vbGasit = False Then
 MsgBox "Foaia nu a fost gasita"
  Else: MsgBox "Foaia a fost gasita"
End If

'cod golire info veche
'.... de facut ...


End Sub
IPP
Moderator
Moderator
 
Mesaje: 3711
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: Macro deschidere foaie

Mesajde maryurs24 » Joi Dec 14, 2017 6:52 pm

Scuze pt majuscule-folosesc un laptop in franceza si fara numpad si nu sunt atent cand tastez cifre sa tin Shift. E mai usor pt mine sa las capslock si scriu la gramada
maryurs24
 
Mesaje: 6
Membru din: Joi Feb 21, 2013 8:34 am

Re: Macro deschidere foaie

Mesajde Nills » Joi Dec 14, 2017 7:46 pm

Sal,

1-daca nu exista foaie cu numele care trebuie, macro nu face nimic si nu stiu ca nu gaseste.

Ca sa eviti alegerea unui nume inexistent, foloseste DV (Data Validation) cu numele foilor, in E7

Pentru a afla ultimul rand cu date in coloana B
Cod: Selectaţi tot
LastRow = Cells(Rows.Count, B).End(xlUp).Row


iar pentru prima celula goala
Cod: Selectaţi tot
LastRow = Cells(Rows.Count, B).End(xlUp).Row + 1
I don't care what you think of me! Unless you think I'm awesome – in which case, you're right! Carry on :D
Nills
 
Mesaje: 211
Membru din: Sâm Ian 23, 2016 11:24 am


Înapoi la Visual Basic for Application (VBA) cu Excel - Intrebari tehnice

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 5 vizitatori