Moi!
Mulla ko laskukaava (makro) Excelissä. Voitteko kertoa miten muutan koodia, että ohjelma tulostaisi D11-solussa myös ensimmäisenä numerona olevan nollan? Nyt ensimmäinen nolla puuttuu...
-----------------------------------------------------
Sub Sarjanumero_tulostus()
' Tulostetaan haluttu määrä sarjanumeroita
' määriteltyyn soluun
' Ohjelma kysyy sarjanumeron mistä tulostus aloitetaan
Dim Arvo, Loppu As String
Dim Alku As Long
Alku = InputBox("Anna sarjanumero mistä aloitetaan")
Arvo = 1
Loppu = InputBox("TULOSTETTAVIEN SARJANUMEROIDEN MÄÄRÄ")
Range("D11").Value = Alku
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Do While Arvo <= (Loppu - 1)
'Range("C5").Value = Alku
Range("D11").Value = Arvo Alku
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Arvo = Arvo 1
On Error GoTo 0
Loop
MsgBox ("Tulostus valmis"), 64, "Huomautus!"
' toimii
End Sub
Ensimmäinen nolla puuttuu solusta tulostettaessa (makro)
35
286
Vastaukset
- Anonyymi
Pyytäisin ystävällisesti asiallisia kommentteja/vastauksia/neuvoja...
- Anonyymi
Pitäisi olla function eikä sub. Etunollat saa muuttamalla funktion sisältävän solun muotoilua, jos funktio palauttaa soluun numeerisen arvon.
Muitakin tapoja on riippuen vähän käyttötarkoituksesta. https://excelchamps.com/blog/leading-zeros/ Sarja- ja puhelinnumerot, varaosanumerot yms. millä ei lasketa, pitää määrittää tekstiksi, eikä luvuiksi jo solumäärityksissä.
- Anonyymi
Itse en osaa, joten voisitko ystävällisesti kertoa miten muutan ko koodia? Kiitos jo etukäteen...
- Anonyymi
Opettele. Kaikkea ei maailmassa saa valmiina.
- Anonyymi
Jos se Sub()ista tuleva numero on vaikka solussa B3, piilota se tulostuksessa ja kirjoita viereen tulostukseen apusarake kaavalla =TEKSTI(B3;"000000") olettaen että B3:n luvun pituus on 5 merkkiä. Kuusi nollaa merkkaa siis että eteen laitetaan yksi nolla kyseiseen soluun.
- Anonyymi
Laskurin kuuluu olla kokonaisluku, sarjanumeron merkkijono.
Alkunollat poistuvat kun sarjanumeroa käsitellään lukuna. On otettava ylös sarjanumeron pituus ja lisättävä erikseen mahdolliset alkunollat lukuarvon eteen erikseen.
Tulostusta ym. ei kannata jakaa moneen paikkaan, vaan vain Do-lauseen sisään. Aloita laskuri nollasta ja lopetusehdoksi <= määrä. - Anonyymi
Alkuperäinen kysyjä kysyy. Eli vieläkään en saa onnistumaan, joten olisiko mahdollista että joku osaaja voisi auttaa ja antaa ehjää koodia...
Olisin todella kiitollinen.- Anonyymi
Oletetaan, että sarjanumero koostuu vain merkeistä 0...9.
Sub Sarjanumero_tulostus()
' Tulostetaan haluttu määrä sarjanumeroita
' määriteltyyn soluun
' Ohjelma kysyy sarjanumeron mistä tulostus aloitetaan
Set solu = Range("D11")
solu.NumberFormat = "@"
Dim Alku As String
Alku = InputBox("Anna sarjanumero mistä aloitetaan")
pituus = Len(Alku)
Arvo = Val(Alku)
lkm = InputBox("TULOSTETTAVIEN SARJANUMEROIDEN MÄÄRÄ")
For i = 0 To lkm - 1
solu.Value = Right(String(pituus, "0") & Arvo i, pituus)
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next i
MsgBox ("Tulostus valmis"), 64, "Huomautus!"
End Sub - Anonyymi
Solun format =text
Ja tällä tulostus
Range("D11").Value = WorksheetFunction.Text(Arvo Alku, "000000000000")
- Anonyymi
Hei! Testasin tätä koodia ja heti ohjelmaa ajaessa (ctrl Q) ilmoittaa, että soluja ei löytynyt? Mikä on väärin? Apuja tarvitaan, itsellä ei osaamista/taitoa...
--------------------------------
Sub Sarjanumero_tulostus()
' Tulostetaan haluttu määrä sarjanumeroita
' määriteltyyn soluun
' Ohjelma kysyy sarjanumeron mistä tulostus aloitetaan
Set solu = Range("D11")
solu.NumberFormat = "@"
Dim Alku As String
Alku = InputBox("Anna sarjanumero mistä aloitetaan")
pituus = Len(Alku)
Arvo = Val(Alku)
lkm = InputBox("TULOSTETTAVIEN SARJANUMEROIDEN MÄÄRÄ")
For i = 0 To lkm - 1
solu.Value = Right(String(pituus, "0") & Arvo i, pituus)
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next i
MsgBox ("Tulostus valmis"), 64, "Huomautus!"
End Sub - Anonyymi
Korjausta. Siis tuolla edellisellä koodilla toimii, mutta edelleen tulostettaessa solusta D11 puuttuu numerosarjan alusta kaikki nollat (eli jos olen kirjoittanut 00100, niin tulostaa 100).
- Anonyymi
Laitaa syöttäessä heittomerkki (') eteen. Silloin Excel pitää luvun merkkijonona.
- Anonyymi
Tällainen toimii, kute kerroin jo aikojasitten.
Solun format =text
Ja tällä tulostus
Range("D11").Value = WorksheetFunction.Text(Arvo Alku, "000000000000")
- Anonyymi
Ei onistu jos laittaa esim '000123
- Anonyymi
Mikähän tässä vielä on väärin?
---------------------------------------
Sub Sarjanumero_tulostus()
' Tulostetaan haluttu määrä sarjanumeroita
' määriteltyyn soluun
' Ohjelma kysyy sarjanumeron mistä tulostus aloitetaan
Dim Arvo, Loppu As Integer
Dim Alku As Long
Alku = InputBox("Anna sarjanumero mistä aloitetaan")
Arvo = 1
Loppu = InputBox("TULOSTETTAVIEN SARJANUMEROIDEN MÄÄRÄ")
Range("D11").Value = WorksheetFunction.Text(Arvo Alku, "000000000000")
Do While Arvo <= (Loppu - 1)
'Range("C5").Value = Alku
Range("D11").Value = Arvo Alku
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Arvo = Arvo 1
On Error GoTo 0
Loop
MsgBox ("Tulostus valmis"), 64, "Huomautus!"
' toimii
End Sub- Anonyymi
Käytä Copy-pastea
- Anonyymi
Jos etunollat jossain vaiheessa katoaa, niin solu on muuttunut numeeriseen muotoon. Tarkasta siis että tulostus on aina teksimuotoista.
- Anonyymi
Tuolla alimmalla koodilla ei tulosta ollenkaan ja ohjelma tuo välillä nollia numerosarjan eteen ja välillä taas ei. Mikähän tuossa on vikana?
- Anonyymi
Kuten sanottu tuossa edellä, niin solu on silloin numeerisessa muodossa.
- Anonyymi
Anonyymi kirjoitti:
Kuten sanottu tuossa edellä, niin solu on silloin numeerisessa muodossa.
Soluun ei kirjoiteta mitään, eikä formatoinnista tarvitse välittää. Makro hoitaa nämä.
- Anonyymi
Anonyymi kirjoitti:
Soluun ei kirjoiteta mitään, eikä formatoinnista tarvitse välittää. Makro hoitaa nämä.
Molemmista listaksistasi puuttuu rivejä. Käytä copy-pastea.
- Anonyymi
Anonyymi kirjoitti:
Molemmista listaksistasi puuttuu rivejä. Käytä copy-pastea.
Korjaan. Jälkimmäisestä puuttuu rivi
solu.NumberFormat = "@" - Anonyymi
Anonyymi kirjoitti:
Soluun ei kirjoiteta mitään, eikä formatoinnista tarvitse välittää. Makro hoitaa nämä.
Hoitaa kyllä, jos se on tehty oikein. Makron pitää siis muuttaa solut aina oikeaan muotoon. Kiinnitä huomio siis siihen.
- Anonyymi
Ei toimi vieläkään tulostus tällä koodilla, jotain on väärin...
Pyytää kyllä ensin "Anna sarjanumero" ja sen jälkeen pyytää "Anna tulostettavien sarjanumeroiden määrä" ja sitten tulee heti ilmoituslaatikko, että "Huomautus, tulostus valmis" ja tulostimelle ei kumminkaan mene tulostuskäskyä? Ainakaan ei tulosta mitään.
--------------------------------------
Sub Sarjanumero_tulostus()
' Tulostetaan haluttu määrä sarjanumeroita
' määriteltyyn soluun
' Ohjelma kysyy sarjanumeron mistä tulostus aloitetaan
Dim Arvo, Loppu As Integer
Dim Alku As Long
Alku = InputBox("Anna sarjanumero mistä aloitetaan")
Arvo = 1
Loppu = InputBox("TULOSTETTAVIEN SARJANUMEROIDEN MÄÄRÄ")
Set solu = Range("D11")
solu.NumberFormat = "@"
Range("D11").Value = WorksheetFunction.Text(Arvo Alku, "0000")
Do While Arvo <= (Loppu - 1)
'Range("C5").Value = Alku
Range("D11").Value = Arvo Alku
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Arvo = Arvo 1
On Error GoTo 0
Loop
MsgBox ("Tulostus valmis"), 64, "Huomautus!"
' toimii
End Sub- Anonyymi
Onko sulla varmasti oikea ikkuna aktiivisena? Kokeile vaihtaa printoutiin sen worksheetin nimi, jossa solukin on. Activesheettiäkin voi tietty kokeilla.
- Anonyymi
Anonyymi kirjoitti:
Onko sulla varmasti oikea ikkuna aktiivisena? Kokeile vaihtaa printoutiin sen worksheetin nimi, jossa solukin on. Activesheettiäkin voi tietty kokeilla.
Tossa vähän vinkkiä http://learnexcelmacro.com/wp/2014/06/excel-macro-to-print/
- Anonyymi
En saa onnistumaan =(
Tarvin lisää apuja (valmista koodia)...- Anonyymi
Mitä olet tekemässä? Tarvitset samaan soluun monta lukua, jos oikein ymmärsin? Peräkkäin? Alekkain?
- Anonyymi
Jos Pythoni taipuu, niin siinä voi tehdä esim. näin:
for i in range(0,13000,777):
print('{0:0{width}}'.format(i, width=5))
00000
00777
01554
02331
03108
03885
04662
05439
06216
06993
07770
08547
09324
10101
10878
11655
12432 - Anonyymi
Valmis koodi on annettu.
Laita tulostusrivi kommentiksi:
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Paina seuraavan rivin kohdalla F9 (vasemmalle tulee punainen pallo)
Kun ohjelma pysähtyy, mitä on solussa D11?
Jatka kierros kerrallaan painamalla F5. - Anonyymi
Anonyymi kirjoitti:
Valmis koodi on annettu.
Laita tulostusrivi kommentiksi:
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Paina seuraavan rivin kohdalla F9 (vasemmalle tulee punainen pallo)
Kun ohjelma pysähtyy, mitä on solussa D11?
Jatka kierros kerrallaan painamalla F5.ActiveWindow viittaa ehkä väärään ikkunaan. Mitä MsgBox ActiveWindow.Caption näyttää?
- Anonyymi
Pythoni ei valitettavasti taivu... =(
- Anonyymi
Jos javascript taipuu, niin sillä voi käyttää etunollia tai vaikka merkkijonoa täyttönä padStart():n avulla.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
'abc'.padStart(10, "foo"); // "foofoofabc"
'abc'.padStart(8, "0"); // "00000abc"
ei ole virhetarkastelua lisättynä
inputboxissa on nyt sallittu vain numerot ja sen virhettä vo käsitellä helpostikini
Sub Tulosta()
Dim Alku As Long
Dim Loppu As Long
Dim i As Long
Alku = Application.InputBox("Anna sarjanumero mistä aloitetaan", 1)
Loppu = Application.InputBox("TULOSTETTAVIEN SARJANUMEROIDEN MÄÄRÄ", 1)
For i = Alku To Alku Loppu
Range("D11") = Format(i, "0000")
Range("D11").NumberFormat = "@"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next
MsgBox ("Tulostus valmis"), 64, "Huomautus!"
End Sub
Ketjusta on poistettu 1 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Kiitos nainen
Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik123840MTV: Kirkossa saarnan pitänyt Jyrki 69 koki yllätyksen - Paljastaa: "Se mikä oli hyvin erikoista..."
Jyrki Linnankivi alias Jyrki 69 on rokkari ja kirkonmies. Teologiaa opiskeleva Linnankivi piti elämänsä ensimmäisen saar782027Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?
Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun5461626Kirjoita yhdellä sanalla
Joku meihin liittyvä asia, mitä muut ei tiedä. Sen jälkeen laitan sulle wappiviestin851298Olet hyvin erilainen
Herkempi, ajattelevaisempi. Toisaalta taas hyvin varma siitä mitä haluat. Et anna yhtään periksi. Osaat myös ilkeillä ja671097Yksi syy nainen miksi sinusta pidän
on se, että tykkään luomusta. Olet luonnollinen, ihana ja kaunis. Ja luonne, no, en ole tavannut vielä sellaista, joka s331018Hyödyt Suomelle???
Haluaisin asettaa teille palstalla kirjoittelevat Venäjää puolustelevat ja muut "asiantuntijat" yhden kysymyksen pohditt214898Hyvää Joulua mies!
Toivottavasti kaikki on hyvin siellä. Anteeksi että olen hieman lisännyt taakkaasi ymmärtämättä kunnolla tilannettasi, o60873- 171854
Paljastavat kuvat Selviytyjät Suomi kulisseista - 1 päivä vs 36 päivää viidakossa - Katso tästä!
Ohhoh! Yli kuukausi viidakossa voi muuttaa ulkonäköä perusarkeen aika rajusti. Kuka mielestäsi muuttui eniten: Mia Mill3808