Den minnesgoda kommer säkert ihåg mitt projekt från förra året.
Nu håller jag på med lite förbättringar. Har en arbetsbok med ca 10 sidor. Har en "multipage-formulär" med 9 flikar.
Har snickrat ihop följande kod - men detta vill ej funka
Option Explicit
Private Sub Fylli()
Dim ctr As MSForms.Control
Dim wsBlad As Worksheet
Dim rnCellD As Range, rnDatum As Range, rnVtskesort As Range, rnCellV As Range, rnHitta As Range, rnKonsum As Range, rnCellK As Range
Set wsBlad = ThisWorkbook.Worksheets("vätskebalans")
Set rnDatum = wsBlad.Range("E7:K7")
For Each ctr In MultiPage1.Pages(MultiPage1.Value).Controls
If TypeOf ctr Is MSForms.CheckBox Then
If ctr.Value Then
For Each rnCellD In rnDatum
If NotIsEmpty(rnCellD) Then
Set rnVtskesort = Range(rnCellD.Offset(8, -3), rnCellD.Offset(24, -3))
Set rnHitta = rnVtskesort.Find(what:=ctrl.Caption)
If rnHitta Is Nothing Then
For Each rnCellV In rnVtskesort
If IsEmpty(rnCellV) Then
rnCellV.Value = chk.Caption
Set rnKonsum = Range(rnCellD.Offset(8, 0), rnCellD.Offset(24, 0))
For Each rnCellK In rnKonsum
If IsEmpty(rnCellK) Then
rnCellK.Value = TextBox.ControlSource
End If
End If
End If
End If
End If
End If
Next ctr
End If
Unload Me
End Sub
Om du vill att vi skall hjälpa dig underlättar det om du beskriver vad som skall göras av din kod och varför. Kommentera koden utförligt, så är det lättare att engarera sig
Oki..
Jag har en formulär (UserForm) med kryssrutor och textrutor. När jag kryssar i en ruta så vill jag att XL i cellområdet B15:B36 skall söka efter en textsträng (=kryssrutan`s Caption). Om strängen hittas skall förflyttas horizontellt till nästa tomma cellen i E7:K7, flyttas vertikal ner och fylla i det angivna värdet . Om textsträngen inte hittas skall strängen skrivas in i nästa tomma cellen i området B15:3, och förflyttas horizontellt till nästa tomma cellen i E7:K7, flyttas vertikal ner och fylla i det angivna värdet .
Koden ser ut som följer:
Dim ctr As MSForms.Control
Dim wsBlad As Worksheet
Dim rnCellD As Range, rnDatum As Range, rnVtskesort As Range, rnCellV As Range, rnHitta As Range, rnKonsum As Range, rnCellK As Range
Set wsBlad = ThisWorkbook.Worksheets("vätskebalans")
Set rnDatum = wsBlad.Range("E7:K7")
For Each ctr In MultiPage1.Pages(MultiPage1.Value).Controls
If TypeOf ctr Is MSForms.CheckBox Then
If ctr.Value Then [B][3][red]' om kryssrutan är i fylld[/red][/3][/B]
For Each rnCellD In rnDatum
If NotIsEmpty(rnCellD) Then [B][3][red]' hitta den första tomma cellen[/red][/3][/B]
Set rnVtskesort = Range(rnCellD.Offset(8, -3), rnCellD.Offset(24, -3)) [B][3][red]' förflytta 3 steg åt vänster och 8 - 24 steg nedåt [/red][/3][/B]
Set rnHitta = rnVtskesort.Find(what:=ctrl.Caption)
If rnHitta Is Nothing Then
For Each rnCellV In rnVtskesort
If IsEmpty(rnCellV) Then
rnCellV.Value = chk.Caption
Set rnKonsum = Range(rnCellD.Offset(8, 0), rnCellD.Offset(24, 0))
For Each rnCellK In rnKonsum
If IsEmpty(rnCellK) Then
rnCellK.Value = TextBox.ControlSource
End If
End If
End If
End If
End If
End If
Next ctr
End If
260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25