Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Adaptor usb3.1gigabit vs Adaptor ...

La multi ani @Atreides!

La multi ani @KENSINGTON!

La multi ani @burebista!
 La multi ani de Florii!

Stihl fs 70 c-e

Challengers (2024)

Care mai sunt mediile de admitere...
 Laptop cu HDD atasare memorie MMC...

Hartile google nu mai au chenarul...

Tomate in ghiveci la curte?

Idei cale de actiune recuperare g...
 Intoleranța lactoza- vegan v...

Tobe acustice insonorizare in blo...

Cine canta? Fragment din melodie...

Tablou sigurante Dacia Sandero 2012
 

[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,801
  • Î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,445
  • Î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,445
  • Î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,445
  • Î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,801
  • Î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,801
  • Î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

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

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