Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Excel - macro vbasic giris


odchu

Öne çıkan mesajlar

excel bir seviyeye kadar biliyoruz tamam; ancak macro vbasic falan hak getire. Ogrenme babinda bulasayim diyorum ve bunun icin de bir tablo bir format hazirlamakla baslayabilirim.

yardimci olursaniz yapmak istedigim soyle bir sey mesela;

tanimli bir alanda,
B7 C7 D7 E7 hucrelerinde dropdown menu ile secilebilecek secenekler olsun. Kullanici her bir secenegi sectikten sonra 5. hucrede ekle komutuyla bu 4 girisi baska bir yere kopyalasin. Ilk secenekleri sectikten sonra EKLE diyecek, secenekler o hucrelerden alinip baska bir tabloya yapistiralacak. Boyle boyle secip secip istedigi kadar 4 degiskenli satiri, alt alta listeleyecek. sonrasinda silme komutu da eklenebilir; grafik de cizdirilir vs vs..

komutlari nereye yazacagimdan bile bihaberdarim, fyi ;p

nasil yapilir bu?
Link to comment
Sosyal ağlarda paylaş

alt+f11 ve sub-end sub ile başla.


şaka bi yana, vba kodlarını bilmiyorsan makro recorderla başlayıp mantığı çözemeye çalışabilirsin.
tabloya girdi olarak her seferinde alt satıra eklenmesi olayı olmasa form kontrolleri ile bile yapılabilirdi koda bulaşmadan ama bu durumda control toolboxa ihtiyacın olacak.
ya da axcess var bu dediğin iş için.
Link to comment
Sosyal ağlarda paylaş

diyelim ki b1 ile b1000 arasına veriyi yapıştıracaksın.
dropdowndan seçtiğin de a2ye yazılıyor olsun,


dim i as variant

for i=1 to 1000

if range("b"&i).value=null then

range("a2").select
selection.copy
range("b"&i).select
selection.paste

else

endif

next



dersen, her tuşa bastığında a2deki değeri b1-b1000 aralığındaki ilk boşluğa kopyalar.

bu arada amele bi kod ve çözüm oldu, scripti de tam hatırlamıyorum zaten. sdfsd

hatta yanlış yazmış bile olabilirim.
Link to comment
Sosyal ağlarda paylaş

tesekkurler; ama anlamadim niye for dongusunu calistiramadigimi, sadece select de kaliyor kopyalamiyor da. Ben de listeyi tersten girmeyi dusundum kontrolu kaldirip satir ekleyerek;

Sub EKLEbutton2()
'
' EKLEbutton2 Macro
'

'
Range("B6:K6").Select
Selection.Copy
Range("B15").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Rows("14:14").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub


copy paste yerine
Range("B6:K6").value=Range("B15").value
da olur gibime geldi ama olmadi ;p neyse bakayim biraz daha IF lere FOR lara..
Link to comment
Sosyal ağlarda paylaş

bir soru daha belki bilen vardir;

dropdown menuyu actigimda, liste uzun malum, alfabetik siraya soksam aradigimi bulmak biraz daha kolaylasiyor tmm, peki klavyede B ye bassam da B nin basina gitse, Z ye bassam listenin sonuna gitse.. bu neden olmuyor internet formlarindaki gibi gibi.. oluru var midir?
Link to comment
Sosyal ağlarda paylaş

odchu said:

excel bir seviyeye kadar biliyoruz tamam; ancak macro vbasic falan hak getire. Ogrenme babinda bulasayim diyorum ve bunun icin de bir tablo bir format hazirlamakla baslayabilirim.

yardimci olursaniz yapmak istedigim soyle bir sey mesela;

tanimli bir alanda,
B7 C7 D7 E7 hucrelerinde dropdown menu ile secilebilecek secenekler olsun. Kullanici her bir secenegi sectikten sonra 5. hucrede ekle komutuyla bu 4 girisi baska bir yere kopyalasin. Ilk secenekleri sectikten sonra EKLE diyecek, secenekler o hucrelerden alinip baska bir tabloya yapistiralacak. Boyle boyle secip secip istedigi kadar 4 degiskenli satiri, alt alta listeleyecek. sonrasinda silme komutu da eklenebilir; grafik de cizdirilir vs vs..

komutlari nereye yazacagimdan bile bihaberdarim, fyi ;p

nasil yapilir bu?



Sub ekleme()
'Sayfa1 deki dropdown menülerden seçilen değerleri aynı workbooktaki Sayfa2 ye eklediğimizi düşünelim.
Range("B7:D7").Copy
Sheets("Sayfa2").Select
Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues ' Sayfa2 ye ilk yapıstırılacak veri 2.satira yapısır. Eger Sayfa2 boşken 1.satırda başlık satırı oluşturulursa daha güzel gözükebilir.
Sheets("Sayfa1").Select
Application.CutCopyMode = False ' Kopyalamadan sonra kopyalanmış alanın etrafında çıkan oynak tire şekillerini iptal eder =)
End Sub
Link to comment
Sosyal ağlarda paylaş

odchu said:

macro record la bi seyler anladim; kodlara da bakarak modifiye edilebilir

peki macro icinde formulleri nasil kullanabilirim? mesela bu ornekte hucrenin ici doluysa bir alt satira yazdirmasini nasil saglarim?


formüllerin metodu var, formulas gibi bişidi sanırım. Ama onları kullanmaktan ziyade kendininkini yazmak daha mantıklı bence. mesela vlookup için kendiminkini kullanıyorum ben, Hem daha fazla hakim oluosun hem değiştirebiliosun.

O dediğine örnek mesela, hücrenin içini bi değişkene atarsın, sonra onu "" a eşitlersin, eşitse boştur, değilse doludur. Ordan alttakine yazıp yazmama kararı verirsin.

bide excelin help'i MUHTEŞEM. sadece o yeter sana aslında.

Bulamayacağın şeyler işte wordden dosya alma işte foto insert etme gibi dışa bağımlı şeyler. Yoksa excel içi herşey örnekli bi biçimde var.
Link to comment
Sosyal ağlarda paylaş

wiski; range i countlayarak yaptim daha bi sukela oldu gibi, tesekkurler

suark; help ansiklopedi mubarek, help ten auto-complete icin drop down icerigini drop dowm un hemen ustune listemeyi kullandim, sonra hide la cok amele oldu ama oldu gibi, sadece auto-complete cok yavas liste uzunsa

iki satir uste git, 3 kolon saga gel nasil derim onlari bulamadim..
Link to comment
Sosyal ağlarda paylaş

2 satır sağa sola git, 3 satır aşağı yukarı gitten kastın eğer aktif hücreyi baz alarak gitmekse offset kullanman gerek.

Örnek ;

Activecell.offset(1,0).Select -- > Offset ( satır, sütun ) şeklinde kullanılır. Verilen satır değeri kadar aşağı, sütun değeri kadar sağa gider. Rakamları negatif verirsen de yukarı ve sola gider.
Link to comment
Sosyal ağlarda paylaş

wiski, dedigim oydu evet cok tesekkurler.. peki herhangi bir variable a nasil baglarim, daha acikca dogru syntax i nedir bunun?
Activecell.offset(&i,&j).Select ??

variable varsa isin icinde syntax error lerinden cikamiorum
herhangi bir araliktaki rowlari temizlemek icin mesela,

cells.find(bla blaa bla..)
i = ActiveCell.Row
Rows("i&:1").Delete ?? i. satirdan 1. satira kadar olanlari temizlesin??

ama melesa baska bir yerde i. satiri secmek icin,
rows(i).select ?? & yok aralik yok i:i gibi..

bir de match komutu cikti offset le beraber karsima malum su an anlamsiz bakiyor..

mmustafaaslan, adrese bakayim ornek ornek ilerliyorsa guzel olur
Link to comment
Sosyal ağlarda paylaş

variable konusunu o kadr standart dusunme abı, hangi methodu kullandıgınla alakalı biraz.

ama range("a" & i) mesela ai değerlerini verir ( i variable ).
Burda mesela
range("a1","b" & i) veya ("a" & i , "b" & k ) yı kullanabilirsin [son olanı tam net hatırlamıyorum ama denemek lazım : da olabilir virgül yerine ]
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...