• DİKKAT

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

Label Caption verilerini karıştır. Veya yer değiştirme

Katılım
13 Temmuz 2016
Mesajlar
613
Excel Vers. ve Dili
Excel 2010 & 2016 Türkçe
Arkadaşlar merhabalar
Userform üzerinde 1 den 50 ye kadar labeller var butona tıkladığım zaman Label Caption verilerini karıştırılmasını istiyorum. Veya labellerin yeri değişsin.
Örnek olarak
label1.caption = a
label2.caption = b
label3.caption = c
butona bastığımızda rastgele yer değiştirsin
label1.caption = c
label2.caption = a
label3.caption = b


Veya 1 den 50 kadar benzersiz rasgele Label.cabtion özelliğine yazı yazsın
 
Son düzenleme:
Userformunuza bir adet ListBox1 nesnesi, 1 adet CommandButton1 nesnesi ve yeterincede label nesnesi ekleyin bu kodu çalıştırın.

Kod:
Private Sub CommandButton1_Click()
ListBox1.Clear
say1 = 0
Dim Kontrol As Control
Dim say As Integer
For Each Kontrol In UserForm1.Controls
If TypeName(Kontrol) = "Label" Then
say1 = say1 + 1
ListBox1.AddItem Kontrol.Name
End If
Next
If say1 = 0 Then GoTo atla1
son = UserForm1.ListBox1.ListCount
sayi = son

ListBox1.Clear

ReDim deg1(son)
If sayi > son Then sayi = son
Randomize Timer
For i = 1 To sayi
atla:
say = Int((Rnd * son) + 1)
If Val(deg1(say)) = 0 Then
deg1(say) = 1
ListBox1.AddItem Controls("label" & say).Caption

Else
GoTo atla
End If

Next i

For r = 0 To ListBox1.ListCount - 1
Controls("label" & r + 1).Caption = ListBox1.List(r)
Next r
atla1:
End Sub
 
Veya listbox sız olarak da bu kodu bir denermisiniz.

Kod:
Private Sub CommandButton2_Click()
ReDim sayilar(5000)
say1 = 0
Dim Kontrol As Control
Dim say As Integer
For Each Kontrol In UserForm1.Controls
If TypeName(Kontrol) = "Label" Then
say1 = say1 + 1
sayilar(say1) = Kontrol.Name
End If
Next

If say1 = 0 Then GoTo atla1

son = say1
sayi = say1

ReDim deg1(son)
If sayi > son Then sayi = son
Randomize Timer
For i = 1 To sayi
atla:
say = Int((Rnd * son) + 1)
If Val(deg1(say)) = 0 Then
deg1(say) = 1
Controls("label" & say).Caption = sayilar(i)
Else
GoTo atla
End If
Next i
atla1:
End Sub
 
Veya listbox sız olarak da bu kodu bir denermisiniz.

Kod:
Private Sub CommandButton2_Click()
ReDim sayilar(5000)
say1 = 0
Dim Kontrol As Control
Dim say As Integer
For Each Kontrol In UserForm1.Controls
If TypeName(Kontrol) = "Label" Then
say1 = say1 + 1
sayilar(say1) = Kontrol.Name
End If
Next

If say1 = 0 Then GoTo atla1

son = say1
sayi = say1

ReDim deg1(son)
If sayi > son Then sayi = son
Randomize Timer
For i = 1 To sayi
atla:
say = Int((Rnd * son) + 1)
If Val(deg1(say)) = 0 Then
deg1(say) = 1
Controls("label" & say).Caption = sayilar(i)
Else
GoTo atla
End If
Next i
atla1:
End Sub

Halit Hocam,

Benzer bir kodu aşağıdaki başlıktaki soru için de yazabilir miyiz?
Seçilen klasör içindeki dosya isimlerini birbiriyle değiştirecek...

http://www.excel.web.tr/f48/klasordeki-resimlerin-adlaryny-deoi-tirmek-t165610.html#post902551
 
Geri
Üst