Soru MODÜLDEN KOMUT ALMA

zulfuernek

Altın Üye
Katılım
24 Haziran 2017
Mesajlar
761
Excel Vers. ve Dili
türkçe
Altın Üyelik Bitiş Tarihi
11-04-2030
Sub imageye_resim_çağır()

'HANGİ OPTİON BUTTON SEÇİLİYSE RESMİ PİCTUREYE ALIR VE İSMİNİ TEXTBOXA YAZAR
For rsm = 1 To 298
If Controls("OptionButton" & rsm).Caption = TextBox1 Then
Image3.Picture = Controls("OptionButton" & rsm).Picture
End If
Next

End Sub




Private Sub OptionButton6_Click()


sat = 2: sut = 3
If OptionButton6 = True Then TextBox1 = OptionButton6.Caption

Call imageye_resim_çağır

End Sub


yukarıdaki kodları modüle ve kodlama böülümüne yazıyorum. amacım userform 300 tane optionbuttona aynı kodlamayı tek tek azmaktansa module den alması. ancak çalıştırmıyor. hata nerededir acaba
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,742
Excel Vers. ve Dili
2021 Türkçe
Merhaba.

OptionButton, TextBox ve İmage nesneleri Excel sayfalarında mı bulunuyor yoksa UserForm da mı?

Eğer UserForm da bulunuyorsa bir Class ekleyin aşağıdaki kodları Class'a kopyalayın.

Kod:
Option Explicit

Public WithEvents Op_Button As MSForms.OptionButton

Private Sub Op_Button_Change()
    ResimCagir
End Sub

Sub ResimCagir()
    UserForm1.Resim_Cagir Op_Button
End Sub
Aşağıdaki kodları da UserForm a kopyalayın.

Kod:
Dim i() As New Class1

Private Sub UserForm_Initialize()
    Dim Bak_Op As Control
    Dim Say As Long
    For Each Bak_Op In UserForm1.Controls
        If TypeName(Bak_Op) = "OptionButton" Then
            ReDim Preserve i(Say)
            Set i(Say).Op_Button = Bak_Op
            Say = 1 + Say
        End If
    Next
End Sub

Public Sub Resim_Cagir(Op As MSForms.OptionButton)
    If Op.Value = True Then
        TextBox1.Text = Op.Caption
        Image1.Picture = Op.Picture
    End If
End Sub
 
Son düzenleme:

zulfuernek

Altın Üye
Katılım
24 Haziran 2017
Mesajlar
761
Excel Vers. ve Dili
türkçe
Altın Üyelik Bitiş Tarihi
11-04-2030
@dalgalikur hocam burda command button aralığı tanımlayabilirmiyiz. malum 300 tane command button var userformda. fori döngüsü kullanabilirmiyiz bura 1 den 300 e kadar
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
UserForm'da 300 tane CommandButton varsa, yakında o dosya bozulabilir .... uyarayım şimdiden.

.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,742
Excel Vers. ve Dili
2021 Türkçe
@dalgalikur hocam burda command button aralığı tanımlayabilirmiyiz. malum 300 tane command button var userformda. fori döngüsü kullanabilirmiyiz bura 1 den 300 e kadar
OptionButton yerine CommandButton kullanmak istiyorsanız aşağıdaki kodları kullanabilirsiniz.
CommandButton sayısının bir önemi yoktur. Kaç tane eklerseniz hepsi için çalışır.

Class Modüle aşağıdaki kodları kopyalayın.

Kod:
Option Explicit

Public WithEvents Op_Button As MSForms.CommandButton

Sub ResimCagir()
    UserForm1.Resim_Cagir Op_Button
End Sub

Private Sub Op_Button_Click()
    ResimCagir
End Sub
Forma aşağıdaki kodları kopyalayın.

Kod:
Dim i() As New Class1

Private Sub UserForm_Initialize()
    Dim Bak_Op As Control
    Dim Say As Long
    For Each Bak_Op In UserForm1.Controls
        If TypeName(Bak_Op) = "CommandButton" Then
            ReDim Preserve i(Say)
            Set i(Say).Op_Button = Bak_Op
            Say = 1 + Say
        End If
    Next
End Sub

Public Sub Resim_Cagir(Op As MSForms.CommandButton)
    TextBox1.Text = Op.Caption
    Image1.Picture = Op.Picture
End Sub
Sayın Haluk'un da dediği gibi bir formda 300 tane buton olması hiç normal değil.
Hangi konuda çalışma yaptığınızı öğrenebilir miyim?
 

zulfuernek

Altın Üye
Katılım
24 Haziran 2017
Mesajlar
761
Excel Vers. ve Dili
türkçe
Altın Üyelik Bitiş Tarihi
11-04-2030
@dalgalikur aslında nümismatik diye koleksiyon takip programı. ama image nesnelerini dosyadan almayı düşünüyorum bende. olayı çevirecem gibi hocam.
 
Üst