Seçili hücre aralığına Enter yaptırma sorunu

Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Arkadaşlar Merhaba, elimde şöyle kısa bir makro var. Makro "Personal.xlsb" içindeki modülde yer alıyor. Bu makro, A sütununda, belirttiğim hücre arağına "F2" ile hücre içine girip ardından "ENTER" yapıyor.Yalnız makro A sütununda "2500"üncü satıra geldiğinde çalışmayı durduruyor. Makroda belirtilen hücre aralığı "A1:A3000" olmasına rağmen neden böyle yapıyor. Çok şey denedim ama yapamadım. Yardımcı olabilecek arkadaşlara teşekkür ederim.
Not: A sütunundaki hücrelerde başka bir ".csv" dosyasından kopyalanıp, yapıştırılan tarihler yer almakta. 2020.04.20 şeklinde...)
Kod:
Sub EnterDate()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ActiveSheet.Range("A1:A3000").Select
For i = 1 To WorksheetFunction.CountA(Range("A1:A3000"))
  SendKeys "{F2}", True
  SendKeys "{ENTER}", True
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem tamamlandı.", vbInformation, "..:: TIME ::.."
End Sub
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,839
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Şunu kod satırını yazıp çalıştırır mısınız?
Kod:
MsgBox WorksheetFunction.CountA(Range("A1:A3000"))
Bu kod ile A sütununda dolu satır sayısını alıyorsunuz, dolu satır sayısı 2500 olduğu için 2500 den sonra döngü duruyor.
For ile başlayan satırı silin yerine aşağıdaki satırı kopyalayın.

Kod:
For i = 1 To Range("A3000").End(xlUp).Row
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Merhaba.
Şunu kod satırını yazıp çalıştırır mısınız?
Kod:
MsgBox WorksheetFunction.CountA(Range("A1:A3000"))
Bu kod ile A sütununda dolu satır sayısını alıyorsunuz, dolu satır sayısı 2500 olduğu için 2500 den sonra döngü duruyor.
For ile başlayan satırı silin yerine aşağıdaki satırı kopyalayın.

Kod:
For i = 1 To Range("A3000").End(xlUp).Row
@dalgalikur ilginiz için çok teşekkür ederim.
Bu kod ile A sütununda dolu satır sayısını alıyor demişsiniz. Ancak dolu satır sayısı 2700'e kadar devam ediyor. Makro ise 2500'üncü satırda işlemi durduruyor. A1 ile A2700 arası daha önce ".csv" uzantılı bir dosyadan kopyalanıp, yapıştırılan tarih verileri ile dolu "2020.04.20" şeklinde.
2700'üncü satıra kadar dolu olmasına rağmen neden 2500'üncü satırda duruyor? Açıkçası verilerin yer aldığı satır sayısı sürekli değiştiğinden ancak 3000'üncü satırı aşmadığından dolu olan hücreleri A1:A3000 aralığında kendi tespit etmesi sürekli hücre aralığını makroda değiştirmemi ya da gereksiz yere 3000!üncü satıra kadar işlem yapmasını engellemesi daha kolay oluyor benim için. Sorun 2700'inci satıra kadar tarih verileri olmasına rağmen işlemi 2500'üncü satırda durdurması. Yardımınız için tekrar teşekkür ederim.
 
Son düzenleme:
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Bu arada istediğiniz satırdaki kodu değiştirdim ancak yine "2499"uncu satırda işlemi durdu. 2700'e kadar tarih verileri dolu olmasına rağmen. Ayrıca şunu farkettim ki makro çalışmayı durdurduğunda "NumLock" tuşu da pasif oluyor. Yani makro işlemi bitirdikten sonra rakam yazamıyorsunuz. Numlocku tekrar aktif etmek gerekiyor :)) Şaştım kaldım gerçekten.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,547
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu kod işinize yarayabilir.

C++:
Option Explicit

Sub Degere_Cevir()
    With Range("A1:A3000")
        .NumberFormat = "General"
        .Value = .Value
    End With
End Sub
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Bu kod işinize yarayabilir.

C++:
Option Explicit

Sub Degere_Cevir()
    With Range("A1:A3000")
        .NumberFormat = "General"
        .Value = .Value
    End With
End Sub
Hayır @dalgalikur bu kod maalesef isteneni yapmıyor. Bu A sütunundaki datalar .csv uzantılı dosyadan kopyalanıp yapıştırılan tarih verileri ile dolu 2020.04.20 biçiminde. İlk kod'un tek sorunu işlemi 2500'üncü satırda durdurması idi. Sonra bir satırda verdiğiniz değişikliği uyguladıktan sonra makroyu tekrar çalıştırdığımda yine 2500'üncü satırda çalışmayı durdurdu. Ayrıca makro çalışmayı durdurunca Numlock tuşununda pasif hale geldiğini farkettim. En son gönderdiğiniz "Degere_Cevir" makrosu ise istenilen sonucu vermedi. Örneğin F2+enter yapan makrolar hüceye girip Enter işlemi yapınca hücredeki tarih verisi hücrede sağa yaslanıyor. Ve diğer hücrelerdeki formüller bu sefer A sütunundaki tarihleri doğru algılayabiliyordu. Ama son gönderdiğiniz "Degere_Cevir" makrosu bir sonuç vermedi :(( Number format yazılı saıtırı "Genral" değil "gg/dd/yyyy" şeklinde değiştirdim yine F2+Enter'dan aldığım sonucu vermedi :((
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,547
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Son kodu ben önermiştim. Sanırım isimler karıştı..

Alternatif olarak deneyiniz.

C++:
Option Explicit

Sub Tarihe_Cevir()
    With Range("A1:A3000")
        .TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 5), TrailingMinusNumbers:=True
    End With
End Sub
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Son kodu ben önermiştim. Sanırım isimler karıştı..

Alternatif olarak deneyiniz.

C++:
Option Explicit

Sub Tarihe_Cevir()
    With Range("A1:A3000")
        .TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 5), TrailingMinusNumbers:=True
    End With
End Sub
@Korhan Ayhan çok teşekkür ederim. Çalıştı :) Üstelik ilk denediğim kod "Send Key" olan 6-7 dakka sürüyordu. Bu kod birkaç saniyede halleti istediğim sonucu aldım. Sayın @dalgalikur ve size emekleriniz için çok teşekkür ederim. Sağolun. Bu son gönderdiğiniz kod işe yaradığına göre bu .csv dosyasından kopyalayıp yapıştırdığım tarih verileri bu makro ile gerekli düzeltme yapmadan neden diğer hücreler hesaplama yaparken tarih verisi olarak görmüyordu? Merakımdan soruyorum. Yani öğrenmek için, bu kodla ne sağlamış olduk,neyi değiştirdik de sayfadaki diğer formüllü hücreler A sütununda yer alan tarihleri doğru görüyor işlem yapıyor artık. Eğer yanıtlayabilirseniz çok sevinirim.
Tekrar teşekkürler Sayın @Korhan Ayhan ve @dalgalikur :)
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Sayın @Korhan Ayhan, bir de çok önemli değil ama eğer basitse , tarihleri virgüllü 20,04,2020 olarak gösteriyor, makroya ekleyeceğimiz bir satır ile nokta ile 20.04.2020 görünmesini sağlayabilir miyiz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,547
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodun en son satırına aşağıdaki satırı eklerseniz nokta-virgül değimi gerçekleşir.

Kod:
Range("A1:A3000").Replace What:=",", Replacement:=".", LookAt:=xlPart
 
Üst