• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Modül İçeriğini Değiştiren Makro

Katılım
22 Aralık 2005
Mesajlar
423
Excel Vers. ve Dili
Microsoft 365
Arkadaşlar merhaba,

Kendi çapımda excel.web.tr den veyahut kitaplar yardımıyla birkaç proje oluşturdum ve Excel VBA nın ne kadar derin olduğunun birkez daha farkına vardım. Tabi hergün yeni şeyler öğrenmenin doğurduğu sonuç ise yeni soru işaretleri oluyor. Bunlardan bir tanesini paylaşmak ve düşüncelerinizi eğer mümkün ise paylaşımlarınızı rica edeceğim. Mantık olarak düşündüğümüzde kendi kendini/veya başka bir kodu şartlara göre güncelleyebilen bir makro yazılabilir mi? Mesela Module1 de yer alan bir kod herhangi bir şart oluştuğunda kendi içinde bulunan veya başka bir modülde bulunan kod satırını revize edebilir mi?
 
Son düzenleme:
Küçük bir uygulama

Sayfadaki kodlar için

Kod:
Const sat = 5
Const sut = 3
Const pat = "YATAY"
Const son = 20



Private Sub CommandButton1_Click()
deg1 = ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.Lines(1, 1)
Kat = Val(Trim(Mid(deg1, 13, Len(deg1))))
deg2 = ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.Lines(2, 1)
kat1 = Val(Trim(Mid(deg2, 13, Len(deg2))))
deg3 = ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.Lines(3, 1)
kat2 = Mid(deg3, 14, 5)
deg4 = ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.Lines(4, 1)
kat3 = Val(Trim(Mid(deg4, 13, Len(deg4))))


SATIRNO = InputBox("Satır numarasını giriniz.", "UYARI!", Kat)
If SATIRNO = "" Then
MsgBox "satır numarassını girmediniz"
Exit Sub
End If

SUTUNNO = InputBox("Sutün numarasını giriniz.", "UYARI!", kat1)
If SUTUNNO = "" Then
MsgBox "sutun numarasını girmediniz"
Exit Sub
End If

sonsut = InputBox("Satır veya sutün adeti giriniz.", "UYARI!", kat3)
If sonsut = "" Then
MsgBox "sutun numarasını girmediniz"
Exit Sub
End If



YATAYNO = InputBox("YATAY" & Chr(10) & Chr(10) & _
"veya" & Chr(10) & Chr(10) & _
"DİKEY" & Chr(10) & Chr(10) & _
"Büyük harflerle Birisini yazınız.", "UYARI!", kat2)

If YATAYNO = "" Then
MsgBox "Sağ tarafa veya Aşağı bölümünü yazmadınız"
Exit Sub
End If

If YATAYNO = "YATAY" Then
YATAYNO = "YATAY"
Else
YATAYNO = "DİKEY"
End If


 
ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.DeleteLines 1
ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.InsertLines 1, "Const sat=" & SATIRNO
ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.DeleteLines 2
ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.InsertLines 2, "Const sut=" & SUTUNNO
ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.DeleteLines 3
ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.InsertLines 3, "Const pat=" & """" & YATAYNO & """"
ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.DeleteLines 4
ThisWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule.InsertLines 4, "Const son=" & sonsut

MsgBox "işlem tamam"
End Sub
 
Bu kodda modül için

Kod:
Const sat = 10
Const sut = 6
Const pat = "YATAY"



Sub dneme()
deg1 = ThisWorkbook.VBProject.VBComponents.VBE.ActiveCodePane.CodeModule.Lines(1, 1)
Kat = Val(Trim(Mid(deg1, 13, Len(deg1))))
deg2 = ThisWorkbook.VBProject.VBComponents.VBE.ActiveCodePane.CodeModule.Lines(2, 1)
kat1 = Val(Trim(Mid(deg2, 13, Len(deg2))))
deg3 = ThisWorkbook.VBProject.VBComponents.VBE.ActiveCodePane.CodeModule.Lines(3, 1)
kat2 = Mid(deg3, 14, 5)

SATIRNO = InputBox("Satır numarasını giriniz.", "UYARI!", Kat)
If SATIRNO = "" Then
MsgBox "satır numarassını girmediniz"
Exit Sub
End If

SUTUNNO = InputBox("Sutun numarasını giriniz.", "UYARI!", kat1)
If SUTUNNO = "" Then
MsgBox "sutun numarasını girmediniz"
Exit Sub
End If

YATAYNO = InputBox("YATAY" & Chr(10) & Chr(10) & _
"veya" & Chr(10) & Chr(10) & _
"DİKEY" & Chr(10) & Chr(10) & _
"Büyük harflerle Birisini yazınız.", "UYARI!", kat2)

If YATAYNO = "" Then
MsgBox "Sağ tarafa veya Aşağı bölümünü yazmadınız"
Exit Sub
End If

If YATAYNO = "YATAY" Then
YATAYNO = "YATAY"
Else
YATAYNO = "DİKEY"
End If

ThisWorkbook.VBProject.VBComponents.VBE.ActiveCodePane.CodeModule.DeleteLines 1
ThisWorkbook.VBProject.VBComponents.VBE.ActiveCodePane.CodeModule.InsertLines 1, "Const sat=" & SATIRNO
ThisWorkbook.VBProject.VBComponents.VBE.ActiveCodePane.CodeModule.DeleteLines 2
ThisWorkbook.VBProject.VBComponents.VBE.ActiveCodePane.CodeModule.InsertLines 2, "Const sut=" & SUTUNNO
ThisWorkbook.VBProject.VBComponents.VBE.ActiveCodePane.CodeModule.DeleteLines 3
ThisWorkbook.VBProject.VBComponents.VBE.ActiveCodePane.CodeModule.InsertLines 3, "Const pat=" & """" & YATAYNO & """"


MsgBox "işlem tamam"
End Sub
 
Geri
Üst