Stie cineva sa programeze in Visual Basic , imi trebuie sa creez niste Macros-uri in Excel si am nevoie de ceva ajutor !
imported_Oleg
07-29-2002, 05:39 PM
Sniffer... spune concret ce-ti trebuie ce fel de macrosuri ... shi apoi vei afla cum le poti face :))
Sniffer
07-29-2002, 11:17 PM
Pai cred ca la Macrosuri ma descurc eu , dar sunt ceva elemente ce nu le pot programa , ca de exemplu cum sa fac sa copii celulele de la C3:F6 in celule de la A1:C3 . Suna usor , dar daca in loc de C3,F6 etc sunt variabile ... cum fac ?
Mask
08-02-2002, 06:53 PM
In Excell este posibilitatea sa faci "Record Macros" si sa editez rezultatul. Eu cind am nevoie de ceva si imi este lene sa caut in help fac anume asha.
Dar vezi ca Excel nu accepta variabile cind faci operatii de copiere etc...
|Continuare|
5: If a = NM Then GoTo 2 Else
GoTo 1:
2:
End Sub
Sniffer
08-18-2002, 03:56 PM
Daca este cineva ce se pricepe bine in Visual Basic Prog. poate are ceva timp Luni sau Marti si sa ne intilnim sa ma ajute putin cu ceva cestii !
animaluts
08-19-2002, 11:24 AM
Oleg , tu ce Windows ai ?
imported_Oleg
08-19-2002, 11:35 AM
Daca m-ai intrebat in Windows: XP
Dar pe deasupra mai tin shi Linux Mandrake (ca n-am alt distributiv) ... cine are SuSE ... raspundetzi va rog!
Mask
08-19-2002, 03:44 PM
Deci uite care este raspunsul meu:
1.In primul rind se socoate ton foarte urit sa folosesti GoTo in program. Straduite sa nu le folosesti sau sa reduci folosirea lor la minim.
2. Excellul intelege variabilele, trebuie doar sa le folosesti corect. De exemplu:
-------------Cum e incorect-------------
Range("a+1:2").Select
Selection.Copy
Range("a").Select
ActiveSheet.Paste
--------------Cum e corect--------------
Range(Str(a + 1) + ":2").Select
Selection.Copy
Range(Str(a)).Select
ActiveSheet.Paste
-----------------Lamurire----------------
Ca argument pentru Range tu ii dai o valoare textuala "a+1:2", adica tu nu folosesti variabila _a_(sa presupunem ca a este egal cu 4) in argumentul tau si ca rezultat Range primeste ca argument exact stringul "a+1:2" in loc de "5:2".
Pentru ca variabila _a_ sa fie folosita in expresia ta care este trimisa ca argument pentru Range, trebuie sa formez un string care o sa contina datele din variabila.
In primul rind tu calculezi a+1 si primesti 5.
In aldoilea rind transferi numarul 5 in stringul "5" folosind functia Str.
In altreilea rind concatenezi stringul "5" cu stringul ":2" si ca rezultat primesti exact un string "5:2" care este trimis ca parametru.
La fel si in cazul cind tu trimiti "a" ca argument pentru Range. Daca vrei sa trimiti valoarea textuala a variabilei _a_ atunci foloseste functia Str pentru ca sa o transformi in tip text.
Sniffer
08-20-2002, 11:12 AM
Mersi mult , o sa vad cum iese si iti scriu !
Sniffer
08-20-2002, 09:20 PM
Da cum faci daca si a doua cifra tre sa fie o variabila ?
Daca in loc de 2 tre sa fie o variabila ca in exemplul lui a+1 , atunci cum scriu ca am incercat asa dar nu a mers :
sa zicem ca 2 sta in loc de d
========================
Range(Str(a + 1) + ":"Str(d)).Select
Selection.Copy
Range(Str(a)).Select
ActiveSheet.Paste
========================
Am crezut ca asa trebuie , dar nu merge !
Ce fac ?
Mask
08-21-2002, 10:56 AM
Aproape e corect. Numai ca incearca sa evaluezi parametrul care tu il trimiti :)
Str(a + 1) + ":"Str(d) - ce avem aici?
Un string care e Str(a+1), alt string care e ":" si altreilea string care e Str(d).
Acuma scopul nostru e sa le concatenam pe toate 3. Concatenarea a stringurilor in VB se face cu ajutorul operatorului +, adica pentru a concatena Str(a) si ":" si Str(b) trebuie sa scriem urmatoarea expressie: Str(a)+":"+Str(d)
Tu ai scapat plusul din expresie :)
Sniffer
08-21-2002, 01:52 PM
Chestia e ca am incercat varianta , dar nu a mers ! Daca ai alta varianta , zii , dar oricum vad eu , poate am gresit ceva si revin !
Mask
08-21-2002, 01:56 PM
La mine totul a mars, controleaza sintaxa.
Sniffer
08-22-2002, 12:38 PM
O.k. Iata chestia. Eu am incercat mai multe variante dar nu mi-a iesit cum trebuie , asa ca o sa-ti explic ce tre sa fac si daca o sa ai ceva timp incearca sa vezi de poti face Modulul , o.k. ?
Des. 1
http://www.victoras.8m.com/images/1.jpg
Deci , sa zicem ca introducem in celula I2 numarul ce trebuie sters din tabela , ex : 4 . modulul tre sa verifice in ce rind se afla numarul 4 si sa copie toate rindurile urmatoare , adica 5 , 6, etc. peste acesta . Adica daca 4 se afla la B7 atunci toate rindurile incepind cu B8 in jos sa le copie in B7 ! Sper ca ai inteles . Tre sa iasa ceva de tipul :
Des. 2
http://www.victoras.8m.com/images/2.jpg
Sper ca ai observat diferenta . Rindul 5 si 6 sau mutat mai sus , numerele se schimba automat ! Dar cum sa fac sa le copii ? Cum sa fac sa iasa cea ce am in Des. 2 ?! :-?
Mask
08-22-2002, 01:08 PM
Am citeva intrebari:
1. Numerele celea(1,2,3,4,5, etc.) tot timpul o sa fie in colonitsa B si o sa starteza din celula 3, adica tot timpul numarul 1 o sa fie in b4, numarul 2 o sa fie in b5, numarul n o sa fie in bn+3?
2. Cum se inscriu numerele in celule? Ai vre-o formula ca celulele sa fie pline? Adica B5=B4+1? Sau le introduci manual?
Sniffer
08-22-2002, 01:35 PM
Da , ai inteles corect . Numerele vor fi in B . Conform la intrebarea cu formula , si asta e corect . Fiecare celula aduna +1 la valoarea celulei precedente ! Si o sa inceapa din celula a treia , adica de la B4 numerele !
Mask
08-22-2002, 01:48 PM
Sub GoRemove()
Dim ln As Integer
Dim i As Integer
Dim rx, ry, column As Integer
rx = 9 ' coloana unde se afla numarul rinduui care tre de sters
ry = 2 ' rindul unde se afla numarul rinduui care tre de sters
column = 2 ' rindul in care se afla coloana cu numerele rindurilor din lista
ln = Cells(ry, rx) ' in ln bagam numarul rindului care tre de sters
' creem un ciclu care gaseste rindul care tre de sters
i = 1
While Cells(i, column) <> ln
i = i + 1
Wend
' stergem rindul si mutam rindurile de mai jos in sus
Rows(i).Select
Selection.Delete Shift:=xlUp
' renumerotam rindurile
While Cells(i, column) <> ""
Cells(i, column) = ln
i = i + 1
ln = ln + 1
Wend
End Sub
Sniffer
08-22-2002, 01:55 PM
Mersi , acus incerc !
Sniffer
08-22-2002, 02:12 PM
' renumerotam rindurile
While Cells(i, column) <> ""
Cells(i, column) = ln
i = i + 1
ln = ln + 1
Wend
In rindul acesta imi da greseala ! Adica e colorat in galben ! Poate nu ai notat corect "" , adica poate celula goal se noteaza altfel ?![/code]
Sniffer
08-22-2002, 02:13 PM
' renumerotam rindurile
While Cells(i, column) <> ""
Cells(i, column) = ln
i = i + 1
ln = ln + 1
Wend
In rindul acesta imi da greseala ! Adica e colorat in galben ! Poate nu ai notat corect "" , adica poate celula goal se noteaza altfel ?!
Mask
08-22-2002, 02:51 PM
Care este mesajul greselei?
La mine merge fine!
Sniffer
08-22-2002, 03:02 PM
Error
Type mismatch !
Mask
08-22-2002, 03:06 PM
hm ... straniu ...
ok, scrie dara Str(Cells(i, column)) in loc de Cells(i, column)
Sniffer
08-22-2002, 03:07 PM
si inca ceva ... daca lasi Celula 2,9 goala atunci modulul sterge rindurile goale de inainte de tabel . Cum faci sa scrii un If de tipul ...
.........
ln = Cells(ry, rx) ' in ln bagam numarul rindului care tre de sters
If ln = "" Then
GoTo 1:
Else
End If ' creem un ciclu care gaseste rindul care tre de sters
I = 1
.........
1: sub end
sau o alta varianta care sa nu stearga celule de inainte ci sa sara peste ele ?
imported_Adrenalin
09-04-2002, 09:51 PM
Cum sa aflu cite simboluri ex.":" sunt intro variabila shi de exemplu imi trebuie sa aflu fiecare simbol al citilea este in string :) Sper ca ma inteles cineva :) Functia InStr arata numai primul simbol gasit dar daca eu vreau sa aflu pe al-2-lea ? :roll: :D
:::[alien]:::
09-09-2002, 12:54 AM
Adrenalin insfirsit tziai pus shi tu in mesaj !:) ne intilnim pe irc!