tommy_sn Skrevet 30. mars 2008 Skrevet 30. mars 2008 Hei! Hvordan lager jeg en tekstbox som skal brukes til input av en dato i Excel - norsk 2000. Datoen er på formen DD.MM.ÅÅÅÅ, og skal brukes til å hente ut de 30 siste datoene fra valgt dato med tilhørende verdier fra en Oracel database. Datoen er lagret i ora_dato i databasen. Tekstboksen skal befinne seg i selve regnearket, og helst inneholde dagens dato når .xls fila åpnes.. Er takknemelig for hjelp på området!
Harald Staff Skrevet 31. mars 2008 Skrevet 31. mars 2008 (endret) Hei Sett inn en textbox og en commandbutton fra kontrollverktøykassen (ikke skjema-menyen). Høyreklikk arkfanen på regnearket, velg "Vis kode", lim inn dette: Option Explicit Dim Dt As Date Private Sub Worksheet_Activate() Dt = Date Me.TextBox1.Text = Format(Dt, "dd.mm.yyyy") End Sub Private Sub TextBox1_LostFocus() Call EnsureDate End Sub Private Sub EnsureDate() Dt = DateSerial(1940, 1, 1) With Me.TextBox1 On Error Resume Next Dt = DateValue(.Text) If Dt > DateSerial(1950, 1, 1) Then .Text = Format(Dt, "dd.mm.yyyy") Else .Text = "" .Activate End If End With End Sub Private Sub CommandButton1_Click() Call EnsureDate If Dt > DateSerial(1950, 1, 1) Then MsgBox "Du skrev " & Format(Dt, "dddd d.mmmm yyyy") & vbNewLine & _ "Her kommer databasekode istedet" Else MsgBox "Ugyldig dato" End If End Sub Nå kan du skrive inn dato på alle vanlige formater: 3.1.07 3.1 4.mai 1/6-08 osv osv. Ingen årstallsangivelse blir "i år". HTH. Beste hilsen Harald Endret 31. mars 2008 av Harald Staff
tommy_sn Skrevet 31. mars 2008 Forfatter Skrevet 31. mars 2008 Er det mulig å få boksen til å vise dagens dato når regenarket åpnes? Og hvordan får jeg til at datoen som er tastet inn "puttes" inn i sql-setningen som er laget med Excel og Microsoft Query? SQL setningen er slik: SELECT MAALINGER_VIEW.INPUT, MAALINGER_VIEW.DATO_ORA, MAALINGER_VIEW.MALT_VERDI FROM USER.MAALINGER_VIEW MAALINGER_VIEW WHERE (MAALINGER_VIEW.INPUT='PUNKT1') ORDER BY MAALINGER_VIEW.DATO_ORA DESC Verdien skal jo da inn i slutten av SQL-setningen hvis jeg ikek tar helt feil, slik at den tar med både den og DESC i sorteringen. Den skal hente datoer som er mindre enn eller lik inntastet verdi.
tommy_sn Skrevet 31. mars 2008 Forfatter Skrevet 31. mars 2008 En annen løsning er muligens å få knappen til å kjøre spørringen med verdien i tekstboksen som kriterie for dato-sorteringen, for så å putte inn resultatet av den spørringen et bestemt sted i Excel-arket..Har aldri drevet noe særlig med akkurat dette så er usikker på hva som fungerer best/er enklest.
Harald Staff Skrevet 31. mars 2008 Skrevet 31. mars 2008 Sånn går det når man stoler på hukommelsen, jeg mente Activate kjørte ved oppstart. Jaja. Putt denne i ThisWorkbook-modulen: Private Sub Workbook_Open() Sheets("Ark1").TextBox1.Text = Format(Date, "dd.mm.yyyy") End Sub Skal du hente rett fra basen, så må du sette referanse til ADO. I VB editoren, Tools - References, og velg Microsoft ActiveX Data Objects 2.x Library der x er det høyeste tallet du finner, vanligvis 2.8. Så endrer du knappekoden til dette og setter inn riktige navn på database og ark: Private Sub CommandButton1_Click() Dim cnn As ADODB.Connection Dim rst As New ADODB.Recordset Dim SSok As String Call EnsureDate If Dt > DateSerial(1950, 1, 1) Then SSok = "SELECT MAALINGER_VIEW.INPUT, MAALINGER_VIEW.DATO_ORA, MAALINGER_VIEW.MALT_VERDI" & Chr(10) & _ "FROM USER.MAALINGER_VIEW MAALINGER_VIEW" & Chr(10) & _ "WHERE (MAALINGER_VIEW.INPUT='PUNKT1') " & _ "AND MAALINGER_VIEW.DATO_ORA<='" & Format(Dt, "yyyy.mm.dd hh:mm:ss") & "'" & Chr(10) & _ "ORDER BY MAALINGER_VIEW.DATO_ORA DESC" Set cnn = New ADODB.Connection cnn.Open "Driver={Microsoft ODBC for Oracle};Server=Databaseadresse;Uid=username;Pwd=password;" rst.Open SSok, _ cnn, adOpenForwardOnly, adLockReadOnly ThisWorkbook.Sheets("Ark3").Range("A2").CopyFromRecordset rst DoEvents rst.Close Set rst = Nothing cnn.Close Set cnn = Nothing Else MsgBox "Ugyldig dato" End If End Sub HTH. Beste hilsen Harald
tommy_sn Skrevet 31. mars 2008 Forfatter Skrevet 31. mars 2008 Tusen takk! Skal prøve det straks jeg har muligheten. Gir tilbakemelding om et par dager på hvordan det går!
tommy_sn Skrevet 2. april 2008 Forfatter Skrevet 2. april 2008 Sånn går det når man stoler på hukommelsen, jeg mente Activate kjørte ved oppstart. Jaja. Putt denne i ThisWorkbook-modulen: Private Sub Workbook_Open() Sheets("Ark1").TextBox1.Text = Format(Date, "dd.mm.yyyy") End Sub HTH. Beste hilsen Harald Denne linja skal legge inn autodato ikkesant? Men boksen er fortsatt blank når arket åpnes..
tommy_sn Skrevet 2. april 2008 Forfatter Skrevet 2. april 2008 (endret) Funka vist likevel..hadde klart å endre et par ting som ødela litt..så har endra det tilbake igjen. Men når jeg klikker på knappen får jeg denne feilmeldingen: Compile error: User defined type not defined Og linja "Dim cnn As ADODB.Connection" merkes blå, og "Private Sub CommandButton1_Click()" blir gul med ei pil forran. Hva er grunnen til det? Kan ikke skjønne at det skal stå feil der? Endret 2. april 2008 av tommy_sn
tommy_sn Skrevet 2. april 2008 Forfatter Skrevet 2. april 2008 Du fungerte det! Tusen takk! Var vist en liten trykkleif og en brukerfeil som hadde sneket seg inn i SQL-setningen..
tommy_sn Skrevet 2. april 2008 Forfatter Skrevet 2. april 2008 (endret) En ting til..når jeg nå endrer datoen og trykker på knappen - hvis det da ikke er nok verdier etter datoen blir cellene i arket stående med de gamle verdiene fra forrige valgte dato. Hvordan legger jeg inn så den blanker cellene før den henter inn de nye? Dette virker: Sheets("Ark3").Select Selection.ClearContents Men her hopper Excel inn i Ark3..det er ønskelig å stå i samme ark som knappen befinner seg i. Og hvordan kan jeg legge inn at et bestemt område skal blankes? Dette funker ikke: Sheets("Ark3").Select Range("A1:L46").Select Selection.ClearContents På forhånd takk! Endret 2. april 2008 av tommy_sn
tommy_sn Skrevet 2. april 2008 Forfatter Skrevet 2. april 2008 Fikk det til å fungere med denne linja: ThisWorkbook.Sheets("Ark3").Range("A1:L46").ClearContents
Harald Staff Skrevet 2. april 2008 Skrevet 2. april 2008 Bra jobba. For et område av variabel størrelse kan du bruke dette: ThisWorkbook.Sheets("Ark3").Range("A1").CurrentRegion.ClearContents Beste hilsen Harald
tommy_sn Skrevet 2. april 2008 Forfatter Skrevet 2. april 2008 Ja, ikke værst at jeg fikk det til..nesten imponert selv..hehe.. Hvordan kan jeg sette celler som kun inneholder 0 til blank? Ønsker ikke å ha noen verdi i de pga det lages grafer av disse.
tommy_sn Skrevet 3. april 2008 Forfatter Skrevet 3. april 2008 Er også ønskelig at endringer som gjøres i dokumentet ved trykk på knappen og endring av teksten i boksen ikke gir spørsmål om lagring..men denne koden fungerer tydeligvis ikke her: Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Saved = True End Sub
Harald Staff Skrevet 3. april 2008 Skrevet 3. april 2008 Nullene: Sheets("Ark3").Range("D1:D800").Replace What:="0", Replacement:="", LookAt:=xlWhole Er også ønskelig at endringer som gjøres i dokumentet ved trykk på knappen og endring av teksten i boksen ikke gir spørsmål om lagring..men denne koden fungerer tydeligvis ikke her: Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Saved = True End Sub Mystisk. Virker her. Men legg Saved = True (eller allerhelst den verdien den hadde før knappetrykket) på slutten av prosedyren din, ikke i Close-eventet. Så oppfører Excel seg normalt etter at du har kjørt. HTH. beste hilsen Harald
tommy_sn Skrevet 3. april 2008 Forfatter Skrevet 3. april 2008 Takk for hjelpen med nullene. Hadde glemt siste argument der med LookAt:=xlWhole, så alt av nuller forsvant.. Hvas jeg skriver bare: Saved = True får jeg feilmelding.. Har prøvd å legge inn dette i under alle ark, modul og thisworkbook: Sub Auto_Close() ThisWorkbook.Saved = True End Sub Men får fortsatt spørmål om lagring ved endring av teksten i tekstboksen. Tekstboksen får jo automatisk opp dagens dato når fila åpnes, og når jeg går tikbae til arket som tekstboksen står i.
tommy_sn Skrevet 20. oktober 2008 Forfatter Skrevet 20. oktober 2008 Hvis jeg i tillegg vil bruke "radio-buttons", avkrysning eller "nedtrekksfelter" for å gi enkelte søkeparametere i tillegg til datosøket, hvordan går jeg frem for å legge inn dette?
tommy_sn Skrevet 21. oktober 2008 Forfatter Skrevet 21. oktober 2008 Ingen som kan hjelp meg med dette?
Harald Staff Skrevet 21. oktober 2008 Skrevet 21. oktober 2008 Jo da, men denne tråden er litt forvirrende etterhvert. I tillegg til hva, og hva er det du strever med å få til ? Er det å kode SQL-søket, å legge inn radiobuttons, .. ?
tommy_sn Skrevet 21. oktober 2008 Forfatter Skrevet 21. oktober 2008 Er for å definere sql-setningen ja..
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå