11. juni 2008 - 11:52
												Der er
									4 kommentarer													og
					1 løsning									
									
		 
		
			
Kan man gange med forskellige værdier alt efter indtastede værdi?
			Hej
Er i gang med at lave et lille regneark der skal holde styr på lidt print information.
Jeg har lavet en lille "tabel" med datoer i ene side og papir formater(A4, A3, A3+). Det er så meningen at man skal kunne skrive en værdi(antal kopier) i en celle. Antallet skal så ganges med en værdi(pris, men prisen er forskellig alt efter om det 1-2 eller 2-10 kopier. Kan man lave noget smart så regnearket "selv" finder den rigtige pris alt efter indtaskede antal?
Håber I forstår hvad jeg mener el. har nogle gode ideér til hvorledes det kan laves.
På forhånd tak
					
		
	 
		
		
			Fil med 2 ark SagsIndtastning og PrisMatriks
Rem Version 3 - 12-06-08
Rem ====================
Dim arkS                'KONSTANTER KAN MODIFICERES - HVIS DER ÆNDRES I ARK
Const sagsR1 = 7        'Sager  række   Start
Const sagsRx = 21       '-      -       Slut
Const sagsK1 = 4        '-      kolonne Start
Const sagsK9 = 11       '-      -       Slut
Dim arkP
Const prisR1 = 5        'Priser række   Start
Const prisR9 = 8        '-      -       Slut
Private Sub opsætArk()
    Set arkS = ActiveWorkbook.Sheets("Sager")
    Set arkP = ActiveWorkbook.Sheets("Priser")
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    opsætArk
    
    kol = Target.Column
    ræk = Target.Row
    
    If erDetAntalCelle(kol, ræk) = True Then
        antal = Target.Value
        beregn ræk
    End If
    Application.ScreenUpdating = True
End Sub
Private Function erDetAntalCelle(kol, ræk)
    If ræk >= sagsR1 And ræk <= sagsRx And _
      kol >= sagsK1 And kol <= sagsK9 Then
        erDetAntalCelle = True
        Exit Function
    End If
    erDetAntalCelle = False
End Function
Private Sub beregn(ræk)
Dim totPris
    totPris = 0
    
    arkS.Activate
Rem beregn total
    For kol = sagsK1 To sagsK9
        antalCelle = ActiveSheet.Cells(ræk, kol)
        If antalCelle <> "" Then
           pris = findPris(antalCelle, kol)
           arkS.Activate
           totPris = totPris + antalCelle * pris
        End If
    Next kol
    
    If totPris > 0 Then
        ActiveSheet.Cells(ræk, sagsK9 + 1) = totPris
    Else
        ActiveSheet.Cells(ræk, sagsK9 + 1) = ""
    End If
End Sub
Private Function findPris(antal, kol)
Dim fra As Integer, til As Integer, p, interval
    arkP.Activate
    For ræk = prisR1 To prisR9
        interval = ActiveSheet.Cells(ræk, 1)
        p = InStr(interval, "-")
        If p = 0 Then
            MsgBox ("Fejl på prisArk")
            findPrisRække = 0
            Exit Function
        Else
            fra = Left(interval, p - 1)
            til = Mid(interval, p + 1)
            If antal >= fra And antal <= til Then
                findPris = ActiveSheet.Cells(ræk, kol - 1)
                Exit Function
            End If
        End If
    Next ræk
    MsgBox ("Fejl på prisArk")
    findPrisRække = 0
End Function