23. februar 2006 - 20:38Der 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")
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
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
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
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
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
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
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
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.