Avatar billede mvhansen Nybegynder
16. februar 2006 - 23:39 Der er 9 kommentarer og
1 løsning

Søg vandret efter nummer og søg lodret til man finder tom celle

Hej eksperter

jeg har et stk kode der søger lodret, og den vil jeg have til at søge vandret indtil den møder det tal/navn jeg har indtastet i en inputbox, og når den har fundet det tal/navn skal den finde første fri celle lodrat i række A. i række A skal der indtaste et nummer fra en inputbox, og i række B skal der indtaste en beskrivelse fra en inputbox. Der næst skal der skrives i den celle  den hade fundet da den søgte vandrat,
kan det lade sig gøre.
jeg kan lave det med textbox, men det er bare træls at have 10 stk textbox eller mere, og man bruger kun 3stk vær gang man skriver.
eller er der en der har en beder eller nemmer måde


filen er her  http://www.michael.hansen7500.dk/excel/kassebog.xls


mvh

mvhansen
Avatar billede supertekst Ekspert
17. februar 2006 - 13:38 #1
Vil godt prøve at se nærmere på det...

MVH
Supertekst
Avatar billede mvhansen Nybegynder
17. februar 2006 - 16:58 #2
Hej

Hvad er der ivejen med denne kode

Private Sub cmdAdd_Click()
Dim o As Long
Dim bilag_nr As String
Dim Komentar As String
Dim pris As String
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Kassebog")


'find  første tomme row i database'
iRow = ws.Cells(ws.Rows.Count, 1) _
  .End(xlUp).Offset(1, 0).Row

bilag_nr = InputBox("indtastes et bilag nr")

If bilag_nr = "" Then
  MsgBox "Der skal indtastes et bilag nr"
  Else

Komentar = InputBox("indtastes en komentar")

If Komentar = "" Then
  MsgBox "Der skal indtastes en komentar"
  Else

pris = InputBox("indtast pris i kode 100")

If pris = "" Then
  MsgBox "Der skal indtastes et beløb"
  Else
 
    For iRow = 2 To o + 1
        If LCase(ws.Cells(iRow, 1).Value) = LCase(bilag_nr) Then
            bilag_nr = ws.Cells(iRow, 1).Value
            Komentar = ws.Cells(iRow, 2).Value
                pris = ws.Cells(iRow, 3).Value

            MsgBox ("Du har skrevet komentar og pris  ") & ws.Cells(iRow, 2).Value & " " & ws.Cells(iRow, 3).Value & " " & (" Kr")
            Exit For
        Else: If iRow = o Then MsgBox ("Ingen fundet")
        End If
    Next iRow
End If
End If
End If

End Sub

hvis kodet var iorden,    nu referer jeg til det jeg har skrevet ovenfor
kunde den kun skrive til kode feltet i regneark
det vil sige at jeg skal have en knap for vær kode jeg vil sætte ind under

kan det ikke laves i en knap hvor man starter at skrive hvilken kode man vil skrive under

filen er her  http://www.michael.hansen7500.dk/excel/kassebog.xls


mvh

mvhansen
Avatar billede supertekst Ekspert
17. februar 2006 - 18:25 #3
Jeg har ikke set dit sidste indlæg før nu - imidlertid har jeg udarbejdet et forslag på basis af din oprindelige fil - til inspiration:
Userformen er udvidet med: KontoNr, Beskrivelse & Beløb samt Info -du kan nok se meningen i koden.

Hvis du vil have hele XLS-filen - så send din mail til pb@supertekst-it.dk

Dim Ks As Worksheet, antRæk, kontoNr

Private Sub xxcmdAdd_Click()                    'anvendes ikke
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Medlemmer")

'find  første tomme row i database'
iRow = ws.Cells(ws.Rows.Count, 1) _
  .End(xlUp).Offset(1, 0).Row

'check for  part nummer'
'If Trim(Me.txtPart.Value) = "" Then
'  Me.txtPart.SetFocus
'  MsgBox "Indtast et id nr"
'  Exit Sub
'End If
End Sub

Private Sub cmdAdd_Click()
Rem check udfyldte felter
    If Me.f_beskrivelse <> "" And _
        Me.f_KontoNr <> "" And _
            IsNumeric(Me.f_beløb) = True Then
                Me.f_info.Caption = ""
                opdaterBilag
            Else
                Me.f_info.Caption = "Alle felter ikke udfyldt korrekt!"
            End If
End Sub
Private Sub f_KontoNr_Change()
Dim p
    p = InStr(f_KontoNr, " ")
    If p > 0 Then
        kontoNr = Left(f_KontoNr, p - 1)
        If IsNumeric(kontoNr) Then
            AkDeFelter True
            Me.f_info.Caption = ""
            Me.f_bilagsNr.SetFocus
        Else
            AkDeFelter False
            Me.f_info.Caption = "Kontonr ikke valgt!"
        End If
    End If
End Sub
Private Sub AkDeFelter(værdi As Boolean)
    Me.f_bilagsNr.Enabled = værdi
    Me.f_beskrivelse.Enabled = værdi
    Me.f_beløb.Enabled = værdi
    Me.cmdAdd.Enabled = værdi
End Sub
Private Sub rydFelter()
    Me.f_bilagsNr.Value = ""
    Me.f_beskrivelse.Value = ""
    Me.f_beløb.Value = ""
   
    Me.cmdAdd.Enabled = False
End Sub
Private Sub opdaterBilag()
Dim ledigRække, kolonne, række, fundetKol, sidsteKol
    ledigRække = 0
    fundetKol = 0
   
Rem find ledig bilagsrække
    With Ks
        For række = 2 To antRæk
            If .Cells(række, 1) = "" Then
                ledigRække = række
                Exit For
            End If
        Next række
   
Rem find kolonne for kontonr
        sidsteKol = ActiveCell.SpecialCells(xlLastCell).Column
        For kolonne = 1 To sidsteKol
            If .Cells(1, kolonne) = Val(kontoNr) Then
                fundetKol = kolonne
                Exit For
            End If
        Next kolonne
   
Rem opdaterbilag
        If ledigRække > 0 And fundetKol > 0 Then
            Me.f_info.Caption = ""
            .Cells(ledigRække, 1) = Me.f_bilagsNr
            .Cells(ledigRække, 2) = Me.f_beskrivelse
            .Cells(ledigRække, fundetKol) = Val(Me.f_beløb)
           
            rydFelter
        Else
            Me.f_info.Caption = "Række eller Kolonne =0"
        End If
    End With
End Sub
Rem ved opstart af formular
Private Sub UserForm_activate()
Rem henter Indtægt/Udgiftkontonr fra KasseBog
    Set Ks = ActiveWorkbook.Worksheets("Kassebog")
    With Ks
        .Activate
        antRæk = ActiveCell.SpecialCells(xlLastCell).Row
       
        For række = 2 To antRæk
            If .Cells(række, 16) <> "" Then
                Me.f_KontoNr.AddItem CStr(.Cells(række, 16)) + " " + .Cells(række, 17)
            End If
        Next række
    End With
   
Rem slet info
    Me.f_info.Caption = ""
Rem vis konti
    f_KontoNr.DropDown
Rem deaktiver felter
    AkDeFelter False
End Sub
Avatar billede mvhansen Nybegynder
17. februar 2006 - 18:29 #4
Min mail er mvh@it.dk

mvh

mvhansen
Avatar billede mvhansen Nybegynder
17. februar 2006 - 20:06 #5
Hej supertekst

Det er et fin styk arbejde det du har lavet, jeg hade slet ikke tængt over at man kunde bruge en combobox.
kan du ligge et svar så du kan få nogle velfortjent point
lige et sidste spørsmål kan du se hvor fejlen er i den kode jeg hade lavet
den melder ikke fejl men den skriver ikke i arket

mvh

mvhansen
Avatar billede mvhansen Nybegynder
17. februar 2006 - 20:07 #6
Hov du hade smidt et svar
Avatar billede mvhansen Nybegynder
17. februar 2006 - 20:08 #7
Jeg glemte hel at takke dig
Mange tak for hjælpen


mvh

mvhansen
Avatar billede mvhansen Nybegynder
17. februar 2006 - 21:20 #8
Hej supertekst

kan man ikke få f_bilagsNr
til at gemme som tal,
den gemmer som text.
jeg henter nemlig sidste anvendt bilagsNr til en label,
og det kan den ikke med denne form her
Label6.Caption = Application.WorksheetFunction.Large(Sheets("Kassebog").Range("A2:A100"), 1)
Hvis den er gemt som text


mvh

mvhansen
Avatar billede mvhansen Nybegynder
18. februar 2006 - 17:08 #9
Har fundet ud af hvorfor den skrev tal som text
det var her der manglet  Value


Rem opdaterbilag
        If ledigRække > 0 And fundetKol > 0 Then
            Me.f_info.Caption = ""
            .Cells(ledigRække, 1) = Me.f_bilagsNr <<<<<her manglet der .Value>>>>
            .Cells(ledigRække, 2) = Me.f_beskrivelse
            .Cells(ledigRække, fundetKol) = Val(Me.f_beløb)
           
mvh

mvhansen
Avatar billede supertekst Ekspert
18. februar 2006 - 18:16 #10
Selv tak - skulle det være en anden gang.
Skal nok se på dit oprindelige kodeeksempel - men det kan godt vare et par dage.

MVH
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester