En familj av Microsoft-kalkylbladsprogram med verktyg för att analysera, kartlägga och kommunicera data.
Istället för Checkbox skulle jag rekommendera att du använder OptionButton. Det säkrar att användaren inte kan råka ha två eller fler gjorda val. Med OptionButton (Alternativknapp) garanterar man att endast ett val finns. De är gjorda så att övriga släcks om man byter val, vilket är lämpligt i detta fall.
Sen till koden för att styra texten till rätt cell.
I och med att du kontrollerar Ino-NR separat så vet jag inte vilken kolumn du avser gäller som "första lediga rad". Normalt hade jag sökt i kolumn A där NR finns och plockat den första cell som är tom - nu står ett nr redan inskriven. För ett nytt fall, kommer numret alltid sättas innan man går in i Userform och skriver sin text? Dvs är Ino-NR04 i bilden ovan den första lediga raden?
Följande kod kan läggas i din modul där kod för din Userform finns. Jag använder OptionButton, men du kan byta ut till Checkbox om du vill ha dessa kvar. Kom dock ihåg då att den första Chb som är klickad kommer väljas oavsett andra val.
Dim ws As Worksheet
Dim c As Range
Dim kol As Long
Dim rad As Long
Select Case True
Case OptionButton1.Value: kol = 4
Case OptionButton2.Value: kol = 5
Case OptionButton3.Value: kol = 6
Case OptionButton4.Value: kol = 7
End Select
Set ws = Worksheets(1)
Set c = ws.Range("A6:A" & ws.Cells(Rows.Count, 1).End(xlDown).Row).Find(what:=ws.Range("B2").value, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then 'träff finns
ws.Cells(c.Row, kol) = text från din textbox i din Userform
Else 'ingen träff
rad = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ws.Cells(rad, kol) = text från din textbox i din Userform
End If
I början av koden kollas vilken Optionbutton som är aktiv, vilket kommer ge en motsvarande kolumnsiffra.
Sen sätts vilket arbetsblad du samlar all innovationstext i. Är det inte blad 1 ändrar du värdet.
Därefter söker vi efter ett Ino-Nr (jag har satt cell B2 som detta finns i, byt mot den cell du har). Samma kodrad anges också i vilket område vi söker efter Ino-NR. Jag gissade på från A6 och nedåt. Om första Ino-Nr börjar på annan rad, byt ut 6:an.
Nu kommer vi till sektionen där koden delas beroende på om vi fick träff på ett Ino-NR eller ej.
c är bara en variabel som får en cell kopplad till sig om en träff i A-kolumnen inträffar.
Blir det en träff, dvs c är den cell som har Ino-Nr, så skriver vi din Userform-text i cellen för raden c.Row och kolumnen kol.
Blir det ingen träff söks en första lediga rad, och texten skrivs nu i denna cell med motsvarande rad, och givetvis kolumnen kol.
Obs. Här kommer problemet med det jag frågade i inledningen. Om Ino-NR04 är första lediga rad, och ny text ska hamna där, då ska Offset bort från kodraden som letar lediga raden, dvs vi ska inte förskjuta en rad nedåt utan stanna på sista rad med text.
Så raden i slutet som börjar med *rad = ws.Cells( )*ska istället vara:
rad = ws.Cells(Rows.Count, 1).End(xlUp).Row
Labba runt lite och kolla hur långt du kommer, sen får vi ta justeringar allteftersom frågetecken uppstår.