VBADA BOŞ SATIRI BULMA KODU HATA

Çözüldü VBADA BOŞ SATIRI BULMA KODU HATA

  • Konuyu başlatan Konuyu başlatan rasit
  • Başlangıç tarihi Başlangıç tarihi

rasit

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
normalde kullandığım bir kod fakat hata alıyorum amacım kopyaladığı veriyi son boş satıra yapıştırmak Screenshot_2.webp
 

Ekli dosyalar

  • Adsız.webp
    Adsız.webp
    127.5 KB · Görüntüleme: 22
Merhaba @rasit .

Sorularınızı, ekran görüntüsü yerine, cevabımın altındaki İMZA bölümünde yer alan açıklamalar (okuyunuz)
doğrultusunda hazırlayacağınız bir örnek belge üzerinden sorarsanız daha hızlı sonuca ulaşmanız kolaylaşır.

Mevcut belgenizin özel bilgi içermeyen (userform ve kodlar içerisinde olmalı) bir kopyasını foruma eklerseniz iyi olur.

.
 
Merhaba @rasit .

Sorularınızı, ekran görüntüsü yerine, cevabımın altındaki İMZA bölümünde yer alan açıklamalar (okuyunuz)
doğrultusunda hazırlayacağınız bir örnek belge üzerinden sorarsanız daha hızlı sonuca ulaşmanız kolaylaşır.

Mevcut belgenizin özel bilgi içermeyen (userform ve kodlar içerisinde olmalı) bir kopyasını foruma eklerseniz iyi olur.

.
İNDEX formundaki GÜN SONU butonuna bastığımda hata alıyorum ( D klasöründe "Excel GÜNLÜK" adında klasör olması gerekiyor )
 

Ekli dosyalar

@rasit
VBA kodunda .....Select ardından ...Selection.Paste şeklinde kodlama mevcut.
Bir sayfanın bir hücresini SEÇMEK için o sayfanın AKTİF SAYFA olması gerekir.

Mantık olarak da şöyle düşünün;
.... isimli sayfayı aktif sayfa haline getir, yapıştırma yapılacak hücreyi SEÇ,
.... diğer sayfadaki alanı kopyala, aktif sayfaya yapıştır.


Bu açıklamam genel tavrım olan, belgeye en az müdahale etme ilkemle ilgilidir ve şimdilik yukarıdaki açıklamam yeterli ve işinizi görür.

Yoksa asıl fikrim, mevcut kodllamaların oldukça amatörce (muhtemelen makro kaydet yöntemiyle elde edilmiş) oluşturulmuş
bir yapıya sahip. Esas olarak kopyalanacak veya yapıştırılacak sayfa/hücre aktive edilmeden, alan seçilmeden kopyalama kodlanabilir.
Safya isimleri için oluşturduğunuz If.... Elseif....Elseif.... bu şekilde her ay için kodlama yerine sayfa adı bir değişkene alınıp, işlem tek satırda bile kodlanması mümkün bir işlem gibi görünüyor. Mevcut kod yapısını kökten değiştirecek öneride bulunak istemedim.

.
 
@rasit
VBA kodunda .....Select ardından ...Selection.Paste şeklinde kodlama mevcut.
Bir sayfanın bir hücresini SEÇMEK için o sayfanın AKTİF SAYFA olması gerekir.

Mantık olarak da şöyle düşünün;
.... isimli sayfayı aktif sayfa haline getir, yapıştırma yapılacak hücreyi SEÇ,
.... diğer sayfadaki alanı kopyala, aktif sayfaya yapıştır.


Bu açıklamam genel tavrım olan, belgeye en az müdahale etme ilkemle ilgilidir ve şimdilik yukarıdaki açıklamam yeterli ve işinizi görür.

Yoksa asıl fikrim, mevcut kodllamaların oldukça amatörce (muhtemelen makro kaydet yöntemiyle elde edilmiş) oluşturulmuş
bir yapıya sahip. Esas olarak kopyalanacak veya yapıştırılacak sayfa/hücre aktive edilmeden, alan seçilmeden kopyalama kodlanabilir.
Safya isimleri için oluşturduğunuz If.... Elseif....Elseif.... bu şekilde her ay için kodlama yerine sayfa adı bir değişkene alınıp, işlem tek satırda bile kodlanması mümkün bir işlem gibi görünüyor. Mevcut kod yapısını kökten değiştirecek öneride bulunak istemedim.

.
kod bilgim sıfır malesef temel kodları internetten okuyarak yapıyorum çok uzun zaman aldı bunu yapmam eğer başka yöntemi varsa yardımcı olursanız sevinirim.
 
@rasit

Belirttiğim gibi, tüm kodları sıfırdan oluşturamayacağıma göre yaşadığınız sorunun çözümü için;
If ..... Elseif ..... Elbeif .... End If kod blokları arasındaki her koşul kısmında
-- Sheets(yapıştırma yapılacak sayfa adı).Activate
-- Sheets(yapıştırma yapılacak sayfa adı).Range(yapıştırılacak ilk hücre).Activete
-- Sheets(veri alınacak sayfa).Range(kopyalanacak alan).Copy
-- Selection Paste.....
şeklinde bir kod satırı sıralamasını oluşturun.

.
 
@rasit

Önce bundan önceki cevabımı okuyunuz.

Yine de işin ucundan tutup bir kodlama hazırladım.
INDEX isimli UserFormdaki GÜNSONU ALMA kodlarını aşağıdakiyle değiştirerek denemeler yaparsınız.

Dikkat edeceğiniz nokta: Koddaki ThisWorkbook.Path bölümlerini, D dizinindeki klasör yolu olarak düzeltin.
Ben deneme yaparken mecburen belgenin bulunduğu klasörde Excel GÜNLÜK diye bir alt klasör oluşturarak kullandım.


VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(35 satır)
 
@rasit

Önce bundan önceki cevabımı okuyunuz.

Yine de işin ucundan tutup bir kodlama hazırladım.
INDEX isimli UserFormdaki GÜNSONU ALMA kodlarını aşağıdakiyle değiştirerek denemeler yaparsınız.

Dikkat edeceğiniz nokta: Koddaki ThisWorkbook.Path bölümlerini, D dizinindeki klasör yolu olarak düzeltin.
Ben deneme yaparken mecburen belgenin bulunduğu klasörde Excel GÜNLÜK diye bir alt klasör oluşturarak kullandım.


VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(35 satır)
çok teşekkür ederim. benim if lerim yerine 'XDsut = (Month(Date) - 1) * 12 + 1' kodunu kullanmışsınız ama mantığını anlayamıyorum şuan bunun için zamana ihtiyacım var sanırım :) bir soru daha sorabilir miyim ? aynı programdaki gelir gider ekleme bölümüne virgül kullanarak bir rakam girdiğimde hücreyi metin olarak dönüştürüyor ve hesaplamayı bozuyor nokta ile ayırınca sorun olmuyor neden
 
Üst