Avatar billede mvhansen Nybegynder
23. februar 2006 - 20:38 Der er 18 kommentarer og
1 løsning

Hej er der en vba haj der kan hjælpe

Hej eksperter

Jeg kan ikke lige dreje hvordan jeg gør dette.
Jeg til føjere data til et ark med inputbox,

bilag_nr: skal altid skrives i første tomme kolonne A.
Komentar: skal altid skrives i første tomme kolonne B.
pris: skal skrives i den kolonne nr jeg skriver ind i inputbox Ind_Ud.
                                ---------Kolonne nr---------
Bilag nr    Beskrivelse    100    101    1001    1002
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
      '                '        '      '      '
          '                '        '      '      '
          '                '        '      '      '
Også vider
Her er koden jeg bruger

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


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

Ind_Ud = InputBox("indtastes Udgift/Intægt Kode")
If Ind_Ud = "" Then
  MsgBox "Der skal indtastes en Udgift/Intægt Kode"
  Else
 
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 ")
If pris = "" Then
  MsgBox "Der skal indtastes et beløb"
  Else
 
   
          ws.Cells(o, 1).Value = bilag_nr
          ws.Cells(o, 2).Value = Komentar
            ws.Cells(o, 3).Value = pris      'Der skal laves noget her for ellers skriver den altid i kolonne C'

            MsgBox ("Du har skrevet komentar og pris  ") & ws.Cells(o, 2).Value & " " & ws.Cells(o, 3).Value & " " & (" Kr")
     
End If
End If
End If
End If

End Sub

mvh

mvhansen
Avatar billede excelent Ekspert
23. februar 2006 - 21:02 #1
et bud:

if Ind_Ud = 100 then
ws.Cells(o,3)Value = pris
Else
if Ind_Ud = 101 then
ws.Cells(o,4)Value = pris
Else
if Ind_Ud = 1001 then
ws.Cells(o,5)Value = pris
Else
if Ind_Ud = 1002 then
ws.Cells(o,6)Value = pris
Avatar billede excelent Ekspert
23. februar 2006 - 21:07 #2
glemte  punktum før Value
jeg går ud fra du taster 100 for kolonne C og 101 for kolonne D ?
Avatar billede mvhansen Nybegynder
23. februar 2006 - 21:24 #3
Hej excelent
ja det ligger lige for næsen af en,jeg tænker ikke kreativ nok, det virker
men jeg får bare en voldsom lang kode
hvis jeg tilføjer flere nummer
kan det ikke gøres korter

mvh

mvhansen
Avatar billede excelent Ekspert
23. februar 2006 - 21:27 #4
hej michael
er gået i tænke IndputBox :-)
Avatar billede mvhansen Nybegynder
23. februar 2006 - 21:32 #5
ha ha
Avatar billede excelent Ekspert
23. februar 2006 - 21:38 #6
Løkker er ikke min stærke side, men en forløbig
løsning kunne være :

if Ind_Ud = 100 then ws.Cells(o,3)Value = pris
Else
if Ind_Ud = 101 then ws.Cells(o,4)Value = pris
Else
if Ind_Ud = 1001 then ws.Cells(o,5)Value = pris
Else
if Ind_Ud = 1002 then ws.Cells(o,6)Value = pris
Avatar billede kabbak Professor
23. februar 2006 - 21:51 #7
Kolonne = Array(100, 101, 1001, 1002, 1003) ' skriv dine kolonnenavne i rækkefølge
    For i = 0 To UBound(Kolonne)
        If Val(Ind_Ud) = Kolonne(i) Then
            ws.Cells(o, 3 + i).Value = pris
        End If
    Next
Avatar billede kabbak Professor
23. februar 2006 - 21:52 #8
manglede lige dim


    Dim Kolonne As Variant
    Kolonne = Array(100, 101, 1001, 1002, 1003) ' skriv dine kolonnenavne i rækkefølge
    For i = 0 To UBound(Kolonne)
        If Val(Ind_Ud) = Kolonne(i) Then
            ws.Cells(o, 3 + i).Value = pris
        End If
    Next
Avatar billede mvhansen Nybegynder
23. februar 2006 - 22:24 #9
Hej kabbak
Den er fin gider du og beskriv den lidt,
bare så man ikke for en kode og ikke ved hvad det betyder.


Du skal ikke svare på det hvis du ikke har tid.
kan du huske Kopi fra excel til word,
stien til word dokumenten  F:\Michael\Excel\Igang med\Test med excel & word\Kassebog.doc".
kan man ikke lave så bare at den er i samme mappe som excel så virker den,
da jeg som tid skal flytte filerne.
så skal jeg jo ind og endre
F:\Michael\Excel\Igang med\Test med excel & word\Kassebog.doc"

Sub Kassebog()
Dim y As Word.Application
Set y = CreateObject("Word.Application")

  With y
  .Visible = True
    .Documents.Open Filename:="F:\Michael\Excel\Igang med\Test med excel & word\Kassebog.doc"
    Worksheets("Kassebog").Range("A1:D10").Select
    Selection.Copy
    .Selection.GoTo What:=wdGoToBookmark, Name:="Kassebog"
    .Selection.Paste
    Application.CutCopyMode = False
   
    End With
   
End Sub

Excelent du hade ellers fortjent nogle point for din indsats
men kabbak kom med en der var beder

kabbak kan du ligge et svar
og i får mange tak for hjælpen

mvh

mvhansen
Avatar billede kabbak Professor
23. februar 2006 - 22:37 #10
Sub Kassebog()
Dim y As Word.Application
Set y = CreateObject("Word.Application")
A = ThisWorkbook.Path
  With y
  .Visible = True
    .Documents.Open Filename:=ThisWorkbook.Path & "\Kassebog.doc"
    Worksheets("Kassebog").Range("A1:D10").Select
    Selection.Copy
    .Selection.GoTo What:=wdGoToBookmark, Name:="Kassebog"
    .Selection.Paste
    Application.CutCopyMode = False
   
    End With
End Sub

Og så til forklaringen


Dim Kolonne As Variant, I as Long

' her sættes dine kolonners navne ind i et arry, der skal skrives en værdi for hver
' kolonne i rækkefølge, hvad de kaldes er lige meget, men det skal være en værdi.
' den første svarer til kolonne C
    Kolonne = Array(100, 101, 1001, 1002, 1003) ' skriv dine kolonnenavne i rækkefølge
    For i = 0 To UBound(Kolonne)
        If Val(Ind_Ud) = Kolonne(i) Then
    ' her tjekker den om en værdi i Ind_Ud svarer til en værdi i arrayet Kolonne
    ' da i har værdien 0, ved den første (100), det vil sige at hvis du i Ind_Ud
    ' har skrevet 1002, har I værdien 3, som så bliver lagt til kolonne C som også
    ' er 3, det giver 6 = kolonne F
            ws.Cells(o, 3 + i).Value = pris
        End If
    Next
Avatar billede kabbak Professor
23. februar 2006 - 22:38 #11
fjern lige
A = ThisWorkbook.Path
i den første, det var til test
Avatar billede mvhansen Nybegynder
23. februar 2006 - 22:41 #12
Ja ok jeg tog en kopi fra tråden
her er den kode jeg bruger

Sub Kassebog()
Dim y As Word.Application
Set y = CreateObject("Word.Application")

  With y
  .Visible = True
    .Documents.Open Filename:="F:\Michael\Excel\Igang med\Test med excel & word\Kassebog.doc"
    Worksheets("Kassebog").Range("A1:D10").Select
    Selection.Copy
    .Selection.GoTo What:=wdGoToBookmark, Name:="Kassebog"
    .Selection.Paste
    Application.CutCopyMode = False
   
    End With
   
End Sub


mvh

mvhansen
Avatar billede kabbak Professor
23. februar 2006 - 22:44 #13
Sub Kassebog()
Dim y As Word.Application
Set y = CreateObject("Word.Application")

  With y
  .Visible = True
    .Documents.Open Filename:=ThisWorkbook.Path & "\Kassebog.doc"
    Worksheets("Kassebog").Range("A1:D10").Select
    Selection.Copy
    .Selection.GoTo What:=wdGoToBookmark, Name:="Kassebog"
    .Selection.Paste
    Application.CutCopyMode = False
   
    End With
   
End Sub
Avatar billede kabbak Professor
23. februar 2006 - 22:45 #14
ThisWorkbook.Path
betyder
Samme sti som den fil som makroen er i
Avatar billede mvhansen Nybegynder
23. februar 2006 - 22:45 #15
Det går godt for mig
her er koden


Private Sub CommandButton19_Click()
Dim y As Word.Application
Set y = CreateObject("Word.Application")

  With y
  .Visible = True
    Sheets("Kassebog").Visible = True
    .Documents.Open Filename:="F:\Michael\Excel\Igang med\Test med excel & word\Kassebog.doc"
    Worksheets("Kassebog").Range("A1:N32").Copy
    .Selection.GoTo What:=wdGoToBookmark, Name:="Kassebog"
    .Selection.Paste
   
    Worksheets("Kassebog").Range("Ac113:Af120").Copy
    .Selection.GoTo What:=wdGoToBookmark, Name:="Udgift_indtægt"
    .Selection.Paste
    Application.CutCopyMode = False
    Sheets("Kassebog").Visible = False
   
    End With
End Sub
Avatar billede kabbak Professor
23. februar 2006 - 22:48 #16
samme svar
erstat
.Documents.Open Filename:="F:\Michael\Excel\Igang med\Test med excel & word\Kassebog.doc"

med

.Documents.Open Filename:=ThisWorkbook.Path & "\Kassebog.doc"
Avatar billede kabbak Professor
23. februar 2006 - 22:51 #17
Og du skal have begge i samme bibliotek
Avatar billede mvhansen Nybegynder
23. februar 2006 - 22:53 #18
Det virker bare
mange tak
det der med Array ?
ligger du et svar

mvh

mvhansen
Avatar billede kabbak Professor
23. februar 2006 - 22:54 #19
tak for point ;-))
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