Moro
Jeesatkaas tietämätöntä :)
Eli WBA lomakkeella on 135kpl framea jotka nimetty => Frame1 => Frame135
Taulukossa on solussa J numero joka vastaa Framen numeroa,
ja sen pitäisi vaihtaa ko Framen taustaväri.
Kysymys:
Miten saan tuon framen ja numeron yhdistettyä (tuo pätkä ei toimi):
Private Sub CommandButton3_Click()
Dim frame(135)
For a = 2 To 2957
If TextBox1.Text = Range("a" & a) Then
Z = Val(Range("j" & a))
frame(Z).BackColor = &HFF0000
End If
Next aOletan, että kun 'puhut' WBA lomakkeesta niin kyseessä on VBA UserForm.
Mikäli oletukseni osui oikeaan niin Frame kontrollin osalta:
Private Sub CommandButton1_Click() 'testi
For Each Frame In Me.Controls
If Frame.Name = "Frame2" Then 'esim.
Frame.BackColor = &HFF0000
End If
Next
End SubToisaalta taas Frame ei ole tässä nyt se aivan eka ongelma jossa tökkää. Siis miten ihmeessä oletkin päätynyt ajatukseen, että TextBox kontrollin tekstiarvo voisi olla Range objekti:
If TextBox1.Text = Range("a" & a) Then
'...Oletetaan vielä, että viritelmäsi pyörii VBA UserForm:lta käsin ja ko. Range haetaan esim. Työkirjan taulusta Taul1:
Private Sub CommandButton2_Click() 'testi
For a = 2 To Taul1.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If UCase(TextBox1.Text) = Replace(Taul1.Range("a" & a).Address, "$", "") Then
MsgBox "Jee! solu" & Replace(Taul1.Range("a" & a).Address, "$", "") 'testi
TextBox1.Text = "" 'muuten 'Jee! ...' tulee näkyviin joka kierroksella
'mikäli Frame kontrollit on UserForm:lla
For Each Frame In Me.Controls
If Frame.Name = "Frame" & a Then
Frame.BackColor = &HFF0000
Exit For
End If
Next
'HUOM koska laskuri alkaa 2:sta niin Frame1:n taustaväri ei muutu
'koskaan jotenka: "Frame" & a - 1 voisi olla tässä toimivampi.
'mikäli Frame kontrollit on Työkirjan taulussa Taul1 esim.
Dim ctlr As Frame
For Each OLEObject In Taul1.OLEObjects
If OLEObject.Name = "Frame" & a Then
Set ctlr = Taul1.OLEObjects("Frame" & a).Object
ctlr.BackColor = &HFF0000
Set ctlr = Nothing: Exit For
End If
Next
End If
'tällä pääset tarvittaessa ulos silmukasta (a)
'If TextBox1.Text = "" Then Exit For
Next a
End SubAihe on jo aika vanha, joten et voi enää vastata siihen.