2016-04-13 29 views
0

Son 30 dakikada bir komut olarak VBA'da bir dizeyi çalıştırmaya çalışıyorum. Komut böyle olduğunu ve ok çalıştırır: yanı "chb_g_ba2", "chb_g_ba3", vs olduğundanVBA - Komut dizisini Excel'de komut olarak çalıştır

activesheet.chb_g_ba1.visible = true 

Ne yapmaya çalışıyorum, bir değişken olarak "chb_g_ba1" ayarlamaktır. Ben şimdiye kadar denedim ne

- şeyler gibi:

dim l_counter as long: l_counter = 1 
Evaluate (CStr("me.chb_g_ba" & l_counter & ".visible = true")) 

Hatta Eval

Eval (CStr("me.chb_g_ba" & l_counter & ".visible = true")) 

Eval MS Access VBA bir fonksiyondur, ancak belli ki Excel'de mevcut değildir. Oldukça benim sorum bu son derece benzer: VBA how to run a string as a line of code, ancak Excel için değil, Access içindir.

Herhangi bir fikir karşılandı! :)

+2

için:. 'Activesheet.oleobjects ("chb_g_ba1") görünür = TRUE – Rory

+1

Hayır, aslında yazılı dışındaki bir modüle kod. – Rory

+0

Tamam, teşekkürler. Cevabımı iki kez kontrol etmek için sildim. Ama gerçekten işe yarıyor. Soru ise - "Eval()" – Vityata

cevap

1

Kredi Pearson Yazılım Danışmanlık

o yapmanın bir yolu yoktur ama biz bitmiş ise gerekli kodla dinamik yeni bir modül eklemek ve silmek zorunda.

Referanslar: Microsoft Visual Basic Applications Extensibility bu sayfada kullanıcıların bir kontrol, faydası varsayarsak 5,3

Sub test() 
    Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule) 
    VBComp.Name = "NewModule" 
    Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("NewModule").CodeModule 
    Dim l_counter As Long 
    l_counter = 1 
    With VBCodeMod 
     LineNum = .CountOfLines + 1 
     .InsertLines LineNum, _ 
     "Sub MyNewProcedure()" & Chr(13) & "UserForm1.chb_g_ba" & l_counter & ".Visible = True" & Chr(13) & "End Sub" 
    End With 
    'run the new module 
    Application.Run "MyNewProcedure" 
    UserForm1.Show 
    'Delete the created module 
    ThisWorkbook.VBProject.VBComponents.Remove VBComp 
End Sub 
+1

Ayrıca, varsayılan olarak ayarlanmamış vb projeye güvenilir erişim gerektirir. – Rory

+0

Teşekkürler, Karthick. Ama overkill gibi görünüyor. Sadece 10 satırlık kod yazmayı kaldırmak istedim. – Vityata

+1

chr (13) –

İlgili konular