Just nu i M3-nätverket
Gå till innehåll

Skapa lista med ord utefter ikryssade CheckBox


Beccih

Rekommendera Poster

Hej, jag har ett antal CheckBox:s som hör ihop med intilliggande frågor.

Om en av boxarna kryssas i ska ett utvalt ord hamna i en samlad lista.

Jag har två koder som är fel:

-Exempel 1 fyller hela tabellen med samma ord. Jag vill att det bara ska komma 1 ord i raden.
Private Sub CheckBox3_Click()
If CheckBox3.Value = True Then Range("Tabell1").Value = "Skadestånd"
End Sub

Är denna kod användbar? Tänkte om det finns någon kod som begränsar till 1 ord.

- Exempel 2 fyller en utvalt cell med ordet. Det fungerar inte att ha en bestämt cell då jag inte i förväg vet vilka boxar som kommer att fyllas i.
Jag behöver ha en kod som hittar sista lediga cellen i t.ex kolumt A.

Mina CheckBox med tillhörande frågor ska inte vara på samma blad som denna lista med ord som skapas, utan listan ska hamna på bladet efteråt.

Och till sist, det kan vara så att en Checkbox klickas i och sedan ändrar sig användaren, finns det någon loop som emellanåt kollar så att listan enbart är ifylld med ord som just då kommer från iklickade checkbox:s?

Jag hoppas att någon av er kan hjälpa mig.
Tack på förhand.

 

/Rebecca

Länk till kommentar
Dela på andra webbplatser

Exempel 1 anger att ordet "Skadestånd" ska hamna i tabell 1, mitt problem där, som jag inte var så tydlig med är att tabellens alla celler fylls med ordet "Skadestånd".

Det är ju rätt eftersom att koden säger så men kan man ange att ordet enbart ska fyllas i en gång?

Jag tror mer på min kod i Exempel 2, om jag bara får till en kod som anger att kolumenes nästa lediga cell ska fyllas i.

Länk till kommentar
Dela på andra webbplatser

Exempel 1: Du måste ange cell att skriva i, nu anger du hela tabellen som du märker på resultatet.

 

Range("Tabell1").Cells(1,1) = "Skadestånd"

kan vara ett exempel på hur det kan fungera men troligen behöver du ta reda på exakt vilken rad du ska skriva på.

Excel 2007 eller senare och tabellformaterad tabell?

Lägg in en ny rad?

Eller ska koden lägga på första tomma rad.

 

 

ja, som ditt Exempel två ges med andra ord.

Finns några sätt att finna första lediga cell

    Me.Cells(Me.Range("A1").CurrentRegion.Rows.CountLarge + 1, 1).Select
    Me.Range("A1000").End(xlUp).Offset(1).Select
 

exempelvis

Koden blir då med andra ord:

Private Sub CheckBox3_Click()
   If CheckBox3.Value = True Then Me.Range("A1000").End(xlUp).Offset(1).Value = "Skadestånd"
End Sub

Finns fler sätt, om formaterade tabell finns det bra metod för det i det formatet.

Länk till kommentar
Dela på andra webbplatser

Tusen tack!
Jag använder din hjälp med mitt exempel två, att söka upp första lediga cellen i kolumn A.

 

Nu har jag bara ett problem till, finns det någon kodning för att hela tiden söka föränring.

 

Mina CheckBox:s fylls i om frågan är ja, d v s det finns en identifierad risk. Men säg att personen råkar klicka fel och ska klicka i boxen bredvid som innebär "Nej".

Finns det någon kodning som kan göras på andra boxen som gör att det ord som fyllts i i listan försvinner från listan?

 

 

Listan kan t.ex. se ur enligt följande
Brand
Vatten
Skadestånd

 

Men vatten är fel i klickad och har ändrats till nej, då vill jag att den ska försvinna utan att personen ska behöva göra det manuellt.

 

Jag använder mig utav Office 2010.

 

/Rebecca

Länk till kommentar
Dela på andra webbplatser

Med kodningen jag fick:

Private Sub CheckBox3_Click()
   If CheckBox3.Value = True Then Me.Range("A1000").End(xlUp).Offset(1).Value = "Skadestånd"
End Sub

undrar jag även hur jag kan få in att det är kolumnen A i blad 3 som stapeln ska byggas i.
Alltså koden fungerar idag på samma blad som checkbox:en är på men jag vill att stapeln med risker ska hamna på nästkommande blad, d v s 3.

 

Jag provade detta men får felkod:
Private Sub CheckBox3_Click()
If CheckBox3.Value = True Then Me.Range("Blad3!A1000").End(xlUp).Offset(1).Value = "Skadestånd"
End Sub
 

Återigen, stort tack

 

Länk till kommentar
Dela på andra webbplatser

Me refererar till det blad som koden står på. Bara byt ut denna referens till en till det blad du vill att det ska stå på.

Blad3.Range("A1000").End(xlUp).Offset(1).Value = "Skadestånd"

exempelvis.

 

Radera inmatat värde. Två tankar

Om värdet är unikt, sök efter det i kolumnen och radera den cell det står i.

Om värdet inte är unikt måste du skapa annat sätt att hitta rätt rad. Exempelvis vid inskrivning av värde noterar du i en cell hörande till kryssrutan att värdet skrevs in på rad x.

Gäller då bara att användaren inte på något vis kan påverka.

 

Men samtidigt, varför göra det såhär komplicerat? Visserligen lägger min idé över komplexiteten i formler istället. Vilken idé? Jo att skriv in alla ord i en tabell, skriv ett index som motsvarar din kryssruta, länka din kryssruta till cellen bredvid ordet.

Med denna grund kan du ganska enkelt med formler fylla din tabell med dina värden.

 

Ingen VBA-kod alls behövs egentligen.

Länk till kommentar
Dela på andra webbplatser

Me refererar till det blad som koden står på. Bara byt ut denna referens till en till det blad du vill att det ska stå på.

Blad3.Range("A1000").End(xlUp).Offset(1).Value = "Skadestånd"

exempelvis.

 

Radera inmatat värde. Två tankar

Om värdet är unikt, sök efter det i kolumnen och radera den cell det står i.

Om värdet inte är unikt måste du skapa annat sätt att hitta rätt rad. Exempelvis vid inskrivning av värde noterar du i en cell hörande till kryssrutan att värdet skrevs in på rad x.

Gäller då bara att användaren inte på något vis kan påverka.

 

Men samtidigt, varför göra det såhär komplicerat? Visserligen lägger min idé över komplexiteten i formler istället. Vilken idé? Jo att skriv in alla ord i en tabell, skriv ett index som motsvarar din kryssruta, länka din kryssruta till cellen bredvid ordet.

Med denna grund kan du ganska enkelt med formler fylla din tabell med dina värden.

 

Ingen VBA-kod alls behövs egentligen.

Det låter som en klok idé att stapla upp det så, men tänker jag fel om jag då påstår att det kan bli luckor i listan?

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...