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

RichardN

Medlem
  • Antal inlägg

    14
  • Gick med

  • Senaste besök

  1. Sådär, då var det klart med alla formulären. Oves förslag fungerade utmärkt. Stort tack till Monshi och Ove Söderlund för att ni står ut med oss okunniga! Hälsningar! /Richard
  2. Tack igen Ove! Detta fungerar!!! Men, ett litet bekymmer uppstår. Jag vet inte om det går att lösa enkelt med kod, men jag hoppas!!! Det är nämligen som så att det blir fel ordning i kolumnerna nu. I originalet så var kolumn A= 0, i denna kod så är kolumn A=1. Det får till följd att när formuläret sparas och uppdateras så är det en förskjutning i kolumnerna. Eftersom kolumnerna räknas annorlunda där. Nu hade det väl inte varit hela världen att ändra överallt, om det hade rört sig om bara detta formuläret. Men det är en hel drös till... Så, går det att på något enkelt sätt att kodmässigt rätta till detta? Gissar att det kan handla om "Offset"... Ett exempel: txtKartDat.Value = Worksheets("Sheet1").Cells(2 + ActualRowInSheet, 4) Läser in värdet från kolumn D när det skulle ha tagit värdet från kolumn E. Alltså, enligt skärmdump på formuläretovan, Karteringsdatum (txtKartDat) fylls med Sträcka Nr (txtStrNr). Inser att förklaringen är lite rörig. Men hoppas att det ändå går att förstå. /Richard
  3. Har nu provat det också. Det ger följande felmeddelande: "Körfel nr '13'.: Inkompatibla typer" och stannar på "For Each cell In MyRange". /Richard
  4. Det är txtStrNr som är fel. Kolumn A (där det söks värden, A3:A5000) innehåller endast siffror. Dessa räknas upp med automatik när en ny post läggs till i inmatningsformuläret (UserForm1). Kolumnen som blir fel är D3 (där txtStrNr finns). Den borde ju alltså innehålla värdet 1 och inte 10 när jag väljer 1 i Combobox1. A3, som är den första som hittas via bladets sökfunktion innehåller då alltså värdet 1. Då har jag haft A3 markerad när jag använder sökfunktionen. Detta eftersom det är där .find börjar leta(?). Jag lyckas tyvärr inte lista ut hur man använder Debug.Print och brytpunkt för att få ut något vettigt. /Richard Edit: Var det nåt sånt här du menade med Debug.Print? txtStrNr.Value = myRn.Offset(0, 3) Debug.Print txtStrNr.Value Resultatet blir i allafall 10.
  5. Hej Ove! Tack för förslaget! Har lagt till Option Base 1, tyvärr utan framgång. Läste sedan på lite om option base och kom fram till att det har med arrays att göra. Och då förklarar det varför det inte påverkar resultatet här.
  6. Hej Monshi! Tack för att du tar dig tid!!! Jag har implementerat dina förslag, men tyvärr är resultatet detsamma som tidigare (värden från rad 10 kommer upp i stället för värden från rad 1). Jag har gjort ytterligare felsökning (eller, ja, det var mer tur än skicklighet...) och kommit fram till att om jag minskar ner MyRange till att bara omfatta A3:A11 (9 rader alltså) så läses rad 1 in rätt! Ger det några ledtrådar om vad som är vajsing? Hälsningar! /Richard
  7. Hej! Förutsättningarna är som följer. Excel 2010. Koden nedan hör till ett formulär (UserForm2) som ska uppdatera rader i ett excelark (Sheet1). Formuläret populeras med hjälp av en combobox (ComboBox1). Detta fungerar med ett undantag, vad jag har sett hittills: När jag väljer rad 1 i comboboxen så får jag upp värdena för rad 10. Om jag sedan får för mig att köra själva uppdateringen så sparas datan in på rad 1. Jag har sökt med ljus och lykta efter en lösning på de flesta forum på nätet. Det som är kvar nu är krypa till korset och söka hjälp. Jag måste också tillägga att jag inte är så värst självgående i VBA. Största delen av koden nedan har kommit till genom klipp och klistra. Så om det är någon som har tid att förbarma sig över mitt problem så skulle jag uppskatta förklaringar. Men, jag klarar hyffsat av att läsa en del kod, så om det tar för lång tid med förklaring så tar jag vad jag kan få! Tack så mycket på förhand! /Richard Private Sub CButtonExplainSkydd_Click() UserFormSkyddszon.Show End Sub Private Sub cmdDate_Click() DatePickerForm2.Show End Sub Private Sub ComboBox1_Change() On Error GoTo 1 txtKartDat.Value = MyRange.Find(ComboBox1).Offset(0, 4) txtInventerare.Value = MyRange.Find(ComboBox1).Offset(0, 8) txtEUID.Value = MyRange.Find(ComboBox1).Offset(0, 55) txtUID.Value = MyRange.Find(ComboBox1).Offset(0, 45) cboxInvTyp.Value = MyRange.Find(ComboBox1).Offset(0, 47) txtVattDrag.Value = MyRange.Find(ComboBox1).Offset(0, 48) txtFlygbild.Value = MyRange.Find(ComboBox1).Offset(0, 10) txtTerrKart.Value = MyRange.Find(ComboBox1).Offset(0, 15) txtFsghKart.Value = MyRange.Find(ComboBox1).Offset(0, 16) txtStartX.Value = MyRange.Find(ComboBox1).Offset(0, 58) txtStartY.Value = MyRange.Find(ComboBox1).Offset(0, 59) txtSlutX.Value = MyRange.Find(ComboBox1).Offset(0, 60) txtSlutY.Value = MyRange.Find(ComboBox1).Offset(0, 61) txtStrNr.Value = MyRange.Find(ComboBox1).Offset(0, 3) txtStrLen.Value = MyRange.Find(ComboBox1).Offset(0, 19) cboxSida.Value = MyRange.Find(ComboBox1).Offset(0, 18) cboxInvAndel.Value = MyRange.Find(ComboBox1).Offset(0, 22) cboxTotalTackB4.Value = MyRange.Find(ComboBox1).Offset(0, 23) txtBoxB4_5_50.Value = MyRange.Find(ComboBox1).Offset(0, 24) txtBoxB4_5.Value = MyRange.Find(ComboBox1).Offset(0, 25) cboxMossodlB4.Value = MyRange.Find(ComboBox1).Offset(0, 27) cboxTotalTackB5.Value = MyRange.Find(ComboBox1).Offset(0, 28) txtBoxB5_5_50.Value = MyRange.Find(ComboBox1).Offset(0, 29) txtBoxB5_5.Value = MyRange.Find(ComboBox1).Offset(0, 30) cboxMossodlB5.Value = MyRange.Find(ComboBox1).Offset(0, 32) txtDomTrad.Value = MyRange.Find(ComboBox1).Offset(0, 33) cboxBreddArtMark.Value = MyRange.Find(ComboBox1).Offset(0, 34) cboxDomMarkTyp.Value = MyRange.Find(ComboBox1).Offset(0, 35) cboxBreddSkogsMark.Value = MyRange.Find(ComboBox1).Offset(0, 36) cboxDomMarkSkog.Value = MyRange.Find(ComboBox1).Offset(0, 37) cboxMedelBredd.Value = MyRange.Find(ComboBox1).Offset(0, 38) cboxBuskskikt.Value = MyRange.Find(ComboBox1).Offset(0, 39) cboxSkuggning.Value = MyRange.Find(ComboBox1).Offset(0, 41) cboxOversvam.Value = MyRange.Find(ComboBox1).Offset(0, 52) txtRavinBrant.Value = MyRange.Find(ComboBox1).Offset(0, 50) txtOvrigt.Value = MyRange.Find(ComboBox1).Offset(0, 42) Labe21 = ComboBox1 1 End Sub Private Sub CommandButton1_Click() Range("A3").Select With ActiveCell.Offset(ComboBox1.ListIndex, 0) .Offset(0, 0) = ComboBox1 .Offset(0, 4) = txtKartDat .Offset(0, 8) = txtInventerare .Offset(0, 55) = txtEUID .Offset(0, 45) = txtUID .Offset(0, 47) = cboxInvTyp .Offset(0, 48) = txtVattDrag .Offset(0, 10) = txtFlygbild .Offset(0, 15) = txtTerrKart .Offset(0, 16) = txtFsghKart .Offset(0, 58) = txtStartX .Offset(0, 59) = txtStartY .Offset(0, 60) = txtSlutX .Offset(0, 61) = txtSlutY .Offset(0, 3) = txtStrNr .Offset(0, 19) = txtStrLen .Offset(0, 18) = cboxSida .Offset(0, 22) = cboxInvAndel .Offset(0, 23) = cboxTotalTackB4 .Offset(0, 24) = txtBoxB4_5_50 .Offset(0, 25) = txtBoxB4_5 .Offset(0, 27) = cboxMossodlB4 .Offset(0, 28) = cboxTotalTackB5 .Offset(0, 29) = txtBoxB5_5_50 .Offset(0, 30) = txtBoxB5_5 .Offset(0, 32) = cboxMossodlB5 .Offset(0, 33) = txtDomTrad .Offset(0, 34) = cboxBreddArtMark .Offset(0, 35) = cboxDomMarkTyp .Offset(0, 36) = cboxBreddSkogsMark .Offset(0, 37) = cboxDomMarkSkog .Offset(0, 38) = cboxMedelBredd .Offset(0, 39) = cboxBuskskikt .Offset(0, 41) = cboxSkuggning .Offset(0, 52) = cboxOversvam .Offset(0, 50) = txtRavinBrant .Offset(0, 42) = txtOvrigt Application.DisplayAlerts = False ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "Protokoll_B.xlsm" Application.DisplayAlerts = True MsgBox "Uppdaterat och sparat" End With Unload Me End Sub Private Sub CommandButton3_Click() End End Sub Private Sub UserForm_Initialize() For Each cell In MyRange ComboBox1.AddItem cell Next End Sub Function MyRange() Set MyRange = Sheet1.[a3:a5000] End Function
  8. Hej igen! Funkar utmärkt! Det visade sig att jag var väldigt nära i mina egna försök att få till detta. Tackar och bockar ödmjukast! Tänk om alla forum fungerade på detta viset! Hälsningar! /Richard
  9. Hej Monshi! Stort tack för att du tar dig tid!!! Du är en klippa! Vill minnas att du har hjälpt mig en gång tidigare i detta forum också, för några år sedan. Men, vad jag kan se så skriver denna kod över det som redan finns i boxarna, Fungerar alltså på samma sätt som min kod. Dock på ett annat, lite smartare sätt. Mitt problem är att jag inte kan komma på hur man ska få till att det bara fylls med nollor där det är tomma textboxar. /Richard
  10. Hej! Jag har ett formulär med ett antal textboxar, bland annat. Det jag behöver göra är att kolla om vissa av boxarna inte är ifyllda (heltal). När en tom box hittas ska den fyllas med en nolla. Detta görs, enligt min bedömning, lämpligast med en knapp i samband med att man fyller i just den avdelningen av formuläret. Jag kom ju ganska snart, med stor hjälp av nätforum (är ganska novis på det här...) på hur man går till väga när det gäller själva ifyllandet av nollorna, men det går desto sämre med att välja ut de boxar som är tomma. I nuläget skrivs alla boxar över med nollor. Boxarna ifråga är döpta med inledande text som är lika för alla boxar som ska kollas och fyllas. Koden så här långt: Private Sub cmdFillA3Zero_Click() Dim Ctl As Control For Each Ctl In Me.Controls If Left(Ctl.Name, 5) = "txtA3" Then Ctl.Text = 0 End If Next Ctl End Sub All hjälp emottages tacksamt! Hälsningar! /Richard
  11. En bild till , på andra bladet. /Richard Till moderator: Detta är alltså ett klassiskt inlägg!? [bild bifogad 2008-12-08 21:57:49 av RichardN] [inlägget ändrat 2008-12-08 22:00:00 av RichardN]
  12. Hej T! Det såg ju så fint ut när jag skrev inlägget... Försvann visst några tabbar när jag postade.... Som du/ni kan se av moderatorns inlägg så är jag inte så hemma i detta forum. Det dök upp en varningstext om att jag hade över 1000 tecken och skulle kolla om jag hade bommat att använda kod eller log... Anyhow: Nu till skärmdumparna. Vi får se vad det blir av det, har kryssat i rutan... [bild bifogad 2008-12-08 21:55:56 av RichardN] [bild bifogad 2008-12-08 21:56:20 av RichardN] [bild bifogad 2008-12-08 21:56:41 av RichardN] [bild bifogad 2008-12-08 21:57:11 av RichardN]
  13. Hej! Jag vill börja med att säga att jag har spenderat eftermiddagen med att försöka få ihop det och med att leta efter tips på hur detta ska gå till och inte kommer springande hit så fort det tar emot. Mina kunskaper i macroskrivandets värld är ganska begränsade... Med det sagt så hoppas jag att någon förbarmar sig över mitt problem. Egentligen är det faktiskt två stora grejor, men vi börjar väl med den ena: Jag har data i kolumner på 40 olika blad. abborre mört gös längd vikt längd vikt längd vikt 182 84,3 165 61 115 18,6 170 64 149 79 176 70,3 79 43 165 61 165 61 149 38,2 Bladen ser likadana ut (data från olika provfiskenät, 8 olika arter). Det är inte säkert att varje rad innehåller data i bägge kolumnerna! Längd finns dock i varje rad. Det jag vill göra är att leta genom raderna efter fält som innehåller data i både längd- och viktceller. Sedan kopiera dessa data och klistra in dem i respektive kolumn på ett annat blad. Först datan för abborrar sen datan för mörtar. När de första kolumnerna är kopierade och inklistrade skall det gå vidare till nästa blad och göra om samma procedur. Jag har försökt med funktionen OM och får naturligtvis över data, men då får jag ju också med raderna som har data endast i ena kolumnen. Stort tack i förväg om jag kan få någon hjälp med detta! Jag ber att få återkomma med fråga två, en sak i sänder... ed av moderator - för första gången, hör och häpna, TAGIT BORT log-taggar [inlägget ändrat 2008-12-08 19:32:54 av Monshi]
  14. Hej! Jag har ett diagram innehållande fyra serier, två staplar och två linjer. Diagrammet ligger på ett blad och datan på ett annat. Diagrammet uppdateras automatiskt när jag fyller i data. Jag har frångått Excels standardfärger och valt mina egna kulörer. Problemet är att när jag öppnar filen och fyller på med ny data så ändras färgerna till Excels standardfärger och jag måste göra om färgsättningen igen!! Detta är mycket frustrerande. Jag skulle kunna tänka mig att detta är enkelt åtgärdat. Det är bara det att jag inte kan komma på hur jag ska gå till väga... Sitter med Excel 2003 på Win XP pro. Tack på förhand! Med vänlig hälsning! /Richard
×
×
  • Skapa nytt...