excel - Simplifying VBA Code -


i wrote working vba macro goes through inputed client id's , returns specified commission fee client.

the code 100% works, need have boss able add new clients special commission %'s list, without having go through vba code.

how can make simplified vba macro or type excel function code below does, make versitile special klient table?

the main excel table looks this: enter image description here

the table special klients, commission fees, currency, markets, looks this: enter image description here

option explicit  sub komisijas_calc_click()  'declare variables dim klienta_nr long dim isin string dim cena double dim skaits double dim komisija double dim vk string dim summa double dim ksheet worksheet  dim lngfirstrow long: lngfirstrow = 2 dim lnglastrow  long dim lngcol      long: lngcol = 2 dim lngcounter  long dim lngkom long: lngkom = 11     set ksheet = thisworkbook.sheets("spec_klienti")   worksheets(1)     lnglastrow = .cells(.rows.count, lngcol).end(xlup).row      lngcounter = lngfirstrow lnglastrow      klienta_nr = range("b" & lngcounter).value     isin = range("e" & lngcounter).value     cena = range("h" & lngcounter).value     skaits = range("i" & lngcounter).value     vk = range("d" & lngcounter).value     summa = cena * skaits   select case klienta_nr        case 111111                 '(vācija, francija, nīderlandes, itālija, Īrija) - 30 eur min                 if klienta_nr = 111111 , (left(isin, 2) = "de" or left(isin, 2) = "fr" or left(isin, 2) = "nl" or left(isin, 2) = "it" or left(isin, 2) = "ie")                     komisija = summa * 0.01                     .cells(lngcounter, lngkom) = komisija                         end if                 if klienta_nr = 111111 , komisija <= 30                     .cells(lngcounter, lngkom) = 30                         end if                   if klienta_nr = 1111111 , (left(isin, 2) <> "de" or left(isin, 2) <> "fr" or left(isin, 2) <> "nl" or left(isin, 2) <> "it" or left(isin, 2) <> "ie")                     komisija = summa * 0.003                     if komisija >= 40                         .cells(lngcounter, lngkom) = 40                             end if                         end if       case 2222222                 '(vācija, francija, nīderlandes, itālija, Īrija) - 30 eur min                 if klienta_nr = 222222 , (left(isin, 2) = "de" or left(isin, 2) = "fr" or left(isin, 2) = "nl" or left(isin, 2) = "it" or left(isin, 2) = "ie")                     komisija = summa * 0.01                     .cells(lngcounter, lngkom) = komisija                         end if                 'set 30 eur min                 if klienta_nr = 2222222 , komisija <= 30                     .cells(lngcounter, lngkom) = 30                         end if                  if klienta_nr = 2 , (left(isin, 2) <> "de" or left(isin, 2) <> "fr" or left(isin, 2) <> "nl" or left(isin, 2) <> "it" or left(isin, 2) <> "ie")                     goto allelsefails                         end if   case else  allelsefails:                'ip2, 0.03% komisija, 40 eur/usd max                 if right(vk, 1) = 1 or right(vk, 1) = 8                     komisija = summa * 0.003                     .cells(lngcounter, lngkom) = komisija                         end if               'ip1, 0.1% komisija, 40 eur/usd max                 if right(vk, 1) = 7                     komisija = summa * 0.01                     .cells(lngcounter, lngkom) = komisija                         end if                 'komisija max 40, >=40 equals 40                 if komisija >= 40                     .cells(lngcounter, lngkom) = 40                         end if             'end if      end select    next lngcounter   end end sub 


Comments