VBA-kod excell 2010

Anonym
2019-05-22T13:19:42+00:00

Hej P3excel!

Jag sitter med likartade funderingar som vi haft tidiagre, men i ett annat projekt med ett excelldatablad jag byggt upp för att samla  och koppla innovationsideer från min arbetgrupp.

Min första fundeirng är hur jag enklast skriver kod för att styra inmatad textbeskrivning från "txtÄ1" i formulär (UserForm1) där jag har fyra kategorival som väljs via checkboxar (ChbFörvärv(D), ChbAdmin(E), ChbBuissness(F), ChbModell(G)).

Beroende på vilken av dessa checkboxar som är vald, ska texten i txtÄ1 hamna på Blad1 och antingen i kolumn D, E, F eller G beroende på Chb-valet.

Beorende på om det är ett HELT NYTT "case", dvs nytt innovationsnummer, så ska allt styras ner mot första lediga rad.

Alternativet är att man väljer ett BEFINTLIGT Ino-NR och då ska tetxten styras ner till den raden och dom kolumnerna.

Jag stannar där med mina frågor och hoppas än en gång på ditt ovärderliga stöd i detta.

//MagnusG_68

Microsoft 365 och Office | Excel | För hemanvändning | Windows

Låst fråga. Den här frågan har migrerats från Microsoft Support Community. Du kan rösta på om det är till hjälp, men du kan inte lägga till kommentarer eller svar eller följa frågan.

0 kommentarer Inga kommentarer

51 svar

Sortera efter: Äldst
  1. Anonym
    2019-06-25T10:37:02+00:00

    Att göra knappen Enabled=False bör ju givetvis finnas någonstans. Jag visste inte hur användandet av din CmdDatum2-knapp gick till, men utgick ifrån att när den blir tillgänglig så sätter man False inne i den rutinen efter att man klickat på knappen - så är allt nollställt.

    Men jag förstår utifrån din fråga att en användare kan klicka inom cellintervallet och göra knappen tillgänglig, men därefter klicka någon annanstans utan att ha klickat på den numera tillgängliga CmdDatum2-knappen (som normalt skulle gråat knappen).

    Du kan lägga till i koden att klickas det utanför triggningsområdet så sätts knappen False.

    If Not Intersect(Range("AI16:AI30"), Target) Is Nothing Then

      Blad2.CmdDatum2.Enabled = True

    Else

      Blad2.CmdDatum2.Enabled = False

    End If

    Normalt skulle jag inte rekommendera detta tillvägagångssätt då du triggar koden varje gång man jobbar i bladet och klickar runt bland celler. Det vållar inga problem, men några hjärnceller långt inne i min skalle hissade en ogillandeflagga ;-)

    Men det funkar så kör på det.

    Angående programmeringstankar, jag är fullt medveten om att du nyfiket banar ny väg inom vba, så det var ingen jämförelse på det sättet. Det var igenkännande från min sida och mer ett högt tänkande att jag måste uttrycka mig utifrån det perspektivet. Och just Nytt-knappen vi diskuterat var/är en sådan punkt jag vill nå fram med budskapet - om jag nånsin träffar rätt. Men jag lovar att jag ska försöka.

    Var det här svaret till hjälp?

    0 kommentarer Inga kommentarer
  2. Anonym
    2019-06-25T13:25:28+00:00

    Hej,

    Jag är full ut med på dina "programmeringstankar" och dom är för mig helt banbrytande och otroligt häftig att få ta del av och lära sig från, om än att det "tar tid" och at tjag många gånger få kolla tillbaka på vad det var vi sa. . . men till slut så har den ena efter den andra kod-varianten ramlat på plats och kan användas mer tryggt i andra sammanhang - stort TACK för det.

    Jah har nu hur som helst fixat till så att min CmdDatum2-knapp fungerar som jag tänkt mig på bladet. Jag tar till mig av din aspekt kring "klickandet på bladet" som kan påverka detta, men jag låter inte det ta plast i vår dialog just nu. Tar gärna förslag på hur det kan lösaas smidigare vid senare tillfälle.

    Min prio just nu är att färdigställa Sub-rutinen för "NYTT-kommandot" via SPARA-knappen på formuläret. Det står och stampar lite där för mig just nu. Datumfälten ska med in på bladet (kol 31-34) och vidare ska också "Inovationsdatum" (TxtDatum) ramla in på kol nr 2.

    / Väl mött. . .

    MagnusG_68

    Var det här svaret till hjälp?

    0 kommentarer Inga kommentarer
  3. Anonym
    2019-06-25T13:34:02+00:00

    Hej igen. . .

    Kom på en detalj till. . . Jag skulle vilja få veckodagen för valt datum att anges i "LblDag" . . .  Likadant vill jag ska ske på blad2, dvs inovationsdatumet i kolumn 2 ska autoamtiskt generera motsvarande veckodag i kolumn 3.

    Har skapat denna funktion tidigare på både formulär och på blad, men kommer inte riktigt ihåg "formeln" för "Date" kopplat så att veckodagarna anges automatiskt. . . .

    / /MagnusG_68

    Var det här svaret till hjälp?

    0 kommentarer Inga kommentarer
  4. Anonym
    2019-06-25T17:09:18+00:00

    Dina datumboxar först.

    De fyra OptBut med sina tillhörande textboxar med datum kan du lägga till i koden efter den övriga kodbiten där vi slutade senast.

    Jag vet inte vad dina textboxar heter som innehåller datum, men det kan du justera så det blir rätt.

    If OptAn.Value Then ws.Cells(rad, 31) = TxtAn.Text

    Jag skrev TxtAn.Text som en gissning på din textruta där datumet är inskrivet för det första datumvalet man kan göra, byt till vad kontrollen heter. Även optionbutton var jag tveksam om det var hela namnet, förstod inte riktigt med dina parenteser.

    Ovanstående kodrad ska kopieras så du får fyra lika kodrader, men där du ändrar namn på OptBut och resp Textruta som hör till. Och, givetvis ska varje kolumn det skrivs emot justeras - till 32, 33 och 34.

    När du fått in koden och testar kan jag redan nu kasta in en brasklapp gällande textrutor och datum. Det brukar inte alltid falla väl ut när datumvärden ska bli korrekta om man hämtat dessa från en textkälla, vilket en textruta är. Man kan behöva formatera ibland. Men innan vi ger oss in där får du se vad som händer.

    Senaste frågan, att få in veckodag i en cell baserat på det datum som finns skrivet.

    (Du skriver att det ska in på blad 2? Hittills har du bara jobbat mot blad 1, finns det mer under ytan?)

    Ska du skriva in veckodagen via vba eller kommer cellen i C-kolumnen innehålla en formel som kopierar värdet från B-kolumnen och sen via format justerar det till veckodag?

    Om du skriver via vba kan du använda kommandot Format:

     = Format(Datum, "ddd")

    där Datum är det datumvärde du vill göra om till veckodag

    använd "ddd" om du vill ha mån, tis, ons ...

    eller "dddd" om du vill ha måndag, tisdag, onsdag ...

    Var det här svaret till hjälp?

    0 kommentarer Inga kommentarer
  5. Anonym
    2019-06-26T06:43:59+00:00

    Godmorgon!!

    Jag börjar "nerifrån" . . . 

    På bladet så kom jag nu på hur jag gjort tidigare för att få veckodag presenterad automatiskt när man skriver in ett datum i en annan cell.  resp cel i kolumn 3 (C) så har jag nu skrivit in formeln: =VECKODAG(B6;1). Nu är det bara att jag vill få motsvarande "finess" att funka på själva formuläret, dvs datumet som anges i TxtDatum ska generera en veckodag i "LblDag". . . ? Är det där jag ska använda mig av "=Format(Datum,  "dddd")?  Förstår inte riktigt hur koden ska se ut totalt sett för att kopplingen mellan textrutan och etikettrutan ska fungera. . .?

    När det gäller Blad 2 så skrev jag det av vana då det är angivet så i VBAProject-hierarkin. Jag har därför - hittills - hela tiden skrivit in "Bald 2" i resp subrutin där så krävs.

    Jag stannar där och ska nu putta in kodraderna för dom sista datumtextrutorna och OptBut som du anger ovan. Återkommer när det väl är gjort och test är utförd. Du kanske hinner svara på mina funderingar ovan innan dess. . .

    /Hälsning MagnusG_68

    Var det här svaret till hjälp?

    0 kommentarer Inga kommentarer