praegune kellaaeg 20.06.2025 01:13:40
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
NATAS999
HV Guru
liitunud: 02.04.2007
|
22.11.2008 13:16:54
VB serial creator Vol 2 |
|
|
Kuna eelmine teema visati prügikasti konkreetsuse puudumise tõttu, siis teen uue ja parema teema.
Programmi ülesandeks on teha txt fail, mis sisaldab kõiki SN-d, kui on antud intervall ja esimene number.
Ühes reas järjestikuste numbrite vahe = |"intervalli väärtus"|
Ühes tulbas järjestikuste numbrite vahe = |1|
Väike näide macro recordist:
Sub Macro1()
'
' Macro1 Macro
'
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "1"
Range("B1").Select
ActiveCell.FormulaR1C1 = "501"
Range("C1").Select
ActiveCell.FormulaR1C1 = "1001"
Range("D1").Select
ActiveCell.FormulaR1C1 = "1501"
Range("A2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("B2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("D2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("A2:D2").Select
Selection.AutoFill Destination:=Range("A2:D500"), Type:=xlFillDefault
Range("A1:D500").Select
Selection.NumberFormat = "0000"
End Sub
|
Selgitusi koodijupi kohta:
Tegemist on praegu ühe macro recordiga ja juba sellest on vähemalt niipalju kasu, et ei pea enam sadu-/kümneid-/tuhandeid ridu alla lohistama exceli tabelis ja õiget rida otsima.
Tõsi, praegu oleks siis vaja iga variandi jaoks (1;2;3...n+1 tulpa) eraldi macrot või käsitsi lisada paar rida juurde, et saaks ühe tulba juurde, aga praegu jätame selle probleemi kõrvale.
Esialgu oleks vaja siiski viiteid VB käskude ja nende kasutamise kohta.
Küsimusi:
Mida tähendab see FormulaR1C1 ActiveCell taga?
See koht tundub väga imelik:
Range("A2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("B2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("D2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
|
Kas on võimalik kuidagi sama asja ära ajada kasutades Range("A2:D2).Select või Rows("2:2").Select?
Äkki hoopis ilma teise reata üle jäänd numbrid kätte kasutades mingit muud käsku Type:=xlFillDefault asemel?
Esimese numbri väärtuse ja intervalli määramine tuleks ära teha muutujaga, aga näe, ei mäleta enam neid käske kuidagi.
Momendil ei ole mõistus muid küsimusi aursaadavalt formuleerima.
PS. Arvestage sellega, et ainuke kogemus progemisega piirdub vaid basicu ja VB-ga keskkooli progemis tunnis ragistamisega.
Edit: Leidsin pika otsimise peale ühe VB6 tutorialidega lehe. Tuletab natuke meelde ja omandab uusi asju sealt lehelt.
Edit 2:
Dim Intervall As Integer
Dim Numbrikohad As String
Sub Math()
Intervall = 500
Numbrikohad = "0000"
Range("A1").Select
ActiveCell.FormulaR1C1 = 1
Range("B1").Select
ActiveCell.FormulaR1C1 = Intervall + "1"
Range("C1").Select
ActiveCell.FormulaR1C1 = "2" * Intervall + "1"
Range("D1").Select
ActiveCell.FormulaR1C1 = "3" * Intervall + "1"
Range("A1:D1").Select
Selection.AutoFill Destination:=Range("A1:D500"), Type:=xlFillSeries
Range("A1:D500").Select
Selection.NumberFormat = Numbrikohad
End Sub
|
Probleem: oleks vaja muutuja "Intervall" väärtus saada kuidagi Range("A1:D[siia])
muidu sellisena teeb koodijupp excelisse sellise joru ära nagu vaja on.
Edit 3:
Dim NumbriFormaat As String
NumbriFormaat = "\AB 00000"
Rows("1:1000").Select
Selection.NumberFormat = NumbriFormaat |
Siin tekib selline probleem, et osade tähekombinatsioonide korral viskab sellise veateate: Run-time error '1004': Unable to set the NumberFormat property of the Range class ja debug viskab Selection.NumberFormat = NumbriFormaat reale.
Mida teha? Või on viga mujal koodis? Selle konkreetse \AB 00000 korral viskab ka selle vea teate, kuid neid kombinatsioone on veel. NumberFormat pikkusest see ei olene. \AC 00000 näiteks töötab.
Kuna max tulpasi on 40 võimalik praegu kasutada, siis lahendasin AutoFill-ga ühe eelpool väljatoodud probleemidest.
|
|
Kommentaarid: 41 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
39 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
23.11.2008 23:15:16
Re: VB serial creator Vol 2 |
|
|
NATAS999 kirjutas: |
Programmi ülesandeks on teha txt fail, mis sisaldab kõiki SN-d, kui on antud intervall ja esimene number. |
Kahjuks ei saa kohe mitte aru, mida sa ikkagi teha üritad. Mis asjad näiteks need SN-id on, mida sa sinna tekstifaili tahad salvestada? Ja mida sul see exceli tabel üldse sisaldab?
|
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
NATAS999
HV Guru
liitunud: 02.04.2007
|
24.11.2008 19:02:29
|
|
|
SN=serial number
excel ei sisalda midagi alguses. koodijupp tekitab excelisse terve karja numbreid ja siis saveb txt faili.
sellise sisuga txt faili üritan teha näiteks:
CN 0001 CN 0004 CN 0007
CN 0002 CN 0005 CN 0008
CN 0003 CN 0006 CN 0009
|
|
Kommentaarid: 41 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
39 |
|
tagasi üles |
|
 |
infidel
HV kasutaja

liitunud: 31.01.2004
|
25.11.2008 11:46:38
|
|
|
tsitaat: |
Probleem: oleks vaja muutuja "Intervall" väärtus saada kuidagi Range("A1:D[siia])
|
Saab nii:
Selection.AutoFill Destination:=Range("A1:" & Intervall & "), Type:=xlFillSeries |
Ja kui tekib probleeme, siis nii toimib kindlasti:
Selection.AutoFill Destination:=Range("A1:" & Trim(Str(Intervall)) & "), Type:=xlFillSeries |
|
|
Kommentaarid: 36 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
35 |
|
tagasi üles |
|
 |
NATAS999
HV Guru
liitunud: 02.04.2007
|
25.11.2008 17:48:50
|
|
|
Tänud, programm olemas
_________________ "Kuidas on see hea?"
-Auto kirurgia kliinik |
|
Kommentaarid: 41 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
39 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|