Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cel mai bun antivirus / firewall ...

Honor 200 si 200 Pro

ANCPI: Scaderi pe piata imobiliara

Dac+Amp sau DAC/AMP combo pentru ...
 Camera cu panou solar 180° field ...

Eroare F16 msh Whirlpool 6 sense

Toyota - inconveniente minore poa...

Cadere frunze la lamai
 Releu protectie tensiune

Sfat achizitie masina noua

Numere inmatriculare inundatie

Adaptor mandrina la paleta
 Achiziție și inlocuire ...

Recomandare service BMW Bucuresti

Recomandare SSD

Cheie BMW X4 G02 duplicat
 

[Excel] macro copiere celula vecina

- - - - -
  • Please log in to reply
9 replies to this topic

#1
Adrian_dv

Adrian_dv

    New Member

  • Grup: Members
  • Posts: 9
  • Înscris: 11.12.2007
Salut! Pentru introducerea mai rapida a datelor intr-un formular, incerc sa folosesc un makro, care la apasarea tastei {ENTER} sa verifice daca celula activa este goala, iar in acest caz sa copieze valoarea din celula de deasupra. Excel-ul e setat sa deplaseze celula activa in dreapta, extensia fisierului e xlsm.
Am gasit pe internet codul de mai jos, dar nu functioneaza.
Private Sub Worksheet_Change(ByVal Target As Range)
	If Target.Address = ActiveCell.Address Then
		If ActiveCell.Value = "" Then
			Application.OnKey "{ENTER}", "CopiazaInCelula"
		Else
			Application.OnKey "{ENTER}", ""
		End If
	End If
End Sub


Sub CopiazaInCelula()
	If ActiveCell.Row > 1 And ActiveCell.Value = "" Then
		ActiveCell.Value = ActiveCell.Offset(-1, 0).Value
	End If
End Sub

Edited by MarianG, 27 October 2023 - 19:42.


#2
TehCube

TehCube

    Railgun user

  • Grup: Senior Members
  • Posts: 4,837
  • Înscris: 09.01.2007
Functioneaza, probabil gresesti undeva.

- asigura-te ca ai codul in module 1
- da-i un run cu casuta valida selectata sa vezi ca o completeaza
- save si inchizi visual basic
- folsesti enter de la keypad (nu enterul 'principal')

...la mine merge.
Daca la tine nu, da mai multe detalii/poze.

#3
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,567
  • Înscris: 10.08.2005
Si cum se comporta?
Ce nu funcționează?


https://learn.micros...plication.OnKey
ENTER (numeric keypad)  {ENTER}
ENTER  ~ (tilde)


#4
Adrian_dv

Adrian_dv

    New Member

  • Grup: Members
  • Posts: 9
  • Înscris: 11.12.2007

 TehCube, on 27 octombrie 2023 - 18:44, said:

Functioneaza, probabil gresesti undeva.

- asigura-te ca ai codul in module 1
- da-i un run cu casuta valida selectata sa vezi ca o completeaza
- save si inchizi visual basic
- folsesti enter de la keypad (nu enterul 'principal')

...la mine merge.
Daca la tine nu, da mai multe detalii/poze.

Codul se afla in module 1, cu butonul de run functioneaza, am salvat fisierul. Problema apara cand folosesc tasta enter (keypad). Am testat intr-un workbook nou, functioneaza doar cat timp e deschisa fereastra visual basic, cu butonul de run sau tasta F5.

Attached Files

  • Attached File  1.jpg   20.36K   14 downloads
  • Attached File  2.jpg   36.22K   14 downloads
  • Attached File  3.jpg   77.18K   13 downloads
  • Attached File  4.jpg   59.43K   13 downloads


#5
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,567
  • Înscris: 10.08.2005
Target și ActiveCell nu sunt aceleași când dai enter?

Edited by MarianG, 28 October 2023 - 08:41.


#6
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,567
  • Înscris: 10.08.2005
Attached File  20231028_122704.jpg   449.33K   14 downloads

#7
Adrian_dv

Adrian_dv

    New Member

  • Grup: Members
  • Posts: 9
  • Înscris: 11.12.2007
Multumesc de ajutor TehCube si MarianG! Am inteles ce trebuia sa fac. Acum functioneaza.

Attached Files

  • Attached File  5.jpg   157.49K   8 downloads


#8
TehCube

TehCube

    Railgun user

  • Grup: Senior Members
  • Posts: 4,837
  • Înscris: 09.01.2007
Ma bucur ca i-ai dat de cap, dar ceva tot e suspect la triggerul ala cu target.address = activecell.address
Cand ai zis ieri ca tot nu functioneaza, am incercat iar cu un fisier nou (ca nu-l mai aveam pe cel de prima oara), si nici mie nu-mi mai mergea. Sunt 90% sigur ca nu bagasem cod in sheet1 prima oara cand incercasem.

Am refacut acum cu metoda pe care ai aratat-o aici (inclusiv schimbarile din subrutina) si tot nu-mi functioneaza mie, cu trigger in sheet1, degeaba.
Iar faptul ca sub-ul functioneaza si acum si inainte cand dai run imi zice ca problemele sunt date de trigger, de fapt. Da' nu reusesc sa-mi dau seama cum de a mers prima oara, ca luasem fix codul pe care l-ai dat tu.

#9
Adrian_dv

Adrian_dv

    New Member

  • Grup: Members
  • Posts: 9
  • Înscris: 11.12.2007

View PostMarianG, on 28 octombrie 2023 - 08:30, said:

Target și ActiveCell nu sunt aceleași când dai enter?

View PostTehCube, on 29 octombrie 2023 - 11:06, said:

Ma bucur ca i-ai dat de cap, dar ceva tot e suspect la triggerul ala cu target.address = activecell.address

Am scos triggerul, din ce inteleg sunt suficiente functiile din subrutina pentru celula activa. Am postat codul exact cum functioneaza la mine. Sa imi spuneti va rog daca e scris corect, sa nu am surprize cu ceva erori. Pentru activare folosesc shortcut key.
'Cod adaugat in Sheet1
Private Sub Worksheet_Change(ByVal Target As Range)
				Application.OnKey "{ENTER}", "CopiazaInCelula"
End Sub

'Cod adaugat in Module1
Sub CopiazaInCelula()
		'Tasta ENTER deplaseaza selectia in dreapta
		'daca celula activa se afla in randurile 1/11
	If ActiveCell.Row <= 11 Then
		ActiveCell.Offset(0, 1).Select
		'Daca celula activa e goala si nu se afla pe randurile 1/11
		'copiaza valoarea celulei de deasupra
	ElseIf ActiveCell.Row > 11 And ActiveCell.Value = "" Then
		ActiveCell.Value = ActiveCell.Offset(-1, 0).Value
		ActiveCell.Offset(0, 1).Select
		'Nu modifica celulele care contin date
	Else
		If ActiveCell.Row > 11 And Not IsEmpty(ActiveCell.Value) Then
		   ActiveCell.Offset(0, 1).Select
		End If
	End If
End Sub



#10
TehCube

TehCube

    Railgun user

  • Grup: Senior Members
  • Posts: 4,837
  • Înscris: 09.01.2007
Yup, pare sa functioneze corect. Am testat cateva chestii care mi-au trecut prin cap, dar e destul de simplu, nu vad de ce ar face probleme.

Reusisem pe la pranz sa fac codul original sa mearga dar cu Worksheet_Selectionchange in loc de Change, dar nici asa din prima. :)

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate