Keresés

Részletes keresés

Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13267

Az a baj, h ez a kód egy nagyobb makró része, ezért futás közben kéne megcsinálnia a kivonást. De Type mismatch-csel tér vissza a VBA editor. :( Egyébként konkrét számértéket kellene kivonnom belőle, gondolom azért ez a hibaüzenet, mert minden áron szövegként kezeli a dátumom. Kipróbáltam több gépen, 2003-as Excellel is. Ugyanez történik :( Excel beállításait néztem, de nem találtam erre vonatkozóan semmit. Azt nem értem igazból, hogy mitől lesz jó, ha belekattintok (vagy F2), majd elhagyom a cellát (enter, tab vagy máshova klikk az mindegy, mindenhogy jó akkor már).

Előzmény: Or Kán (13265)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13266

A makró nem csak ezt csinálja :)

Sok műveletet kell elvégeznem több adattáblával, amikből további riportokat csinálok. Úgy vagyok vele, h ha már nekiállok egy programnak, akkor a felhasználónak lehetőleg nem hagyok manuálisan elvégzendő feladatot. Szerintem ez a lényege a makróknak :)

 

 

Előzmény: Törölt nick (13264)
Or Kán Creative Commons License 2010.11.15 0 0 13265

Közben lefuttattam a programodat, és teljesen jónak tűnik. A kivonási művelet elvégezhető a programfuttatás után.

Előzmény: Bizakodóvagyok (13257)
Törölt nick Creative Commons License 2010.11.15 0 0 13264

Megbocsáss. Minek ehhez makró?

Előzmény: Bizakodóvagyok (13263)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13263

Normális dátumformátum alatt azt értem, h a cella formátuma dátumformátum, az adat jobb oldalra igazodik, és lehet vele összeadást/kivonást végezni.

 

A J és K oszlopban vannak a számomra teljesen rossz dátumok. (nap.hó.év)

Ezt csak azért írtam oda, hogy ne kelljen átírnom a kódot a példa miatt...h egyértelmű legyen.

Elszámoltam magam ezek szerint :)

Előzmény: Or Kán (13261)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13262

Szia!

 

 

"Miért nem ezt alkalmazod?

 

x = Range("A1").End(xlDown).Row"

 

Mert nem folyamatos az adat.

 

"(Nem is beszélve arról, hogy a 2007-es excelben már nem 65536 sor van egy munkalapon - ha már mindenképpen a végéről akarod kezdeni, hanem 1048576."

 

Az Excelem 2007-es, de az adattáblám 2003-ból van.

 

Azért köszi! :)

 

Előzmény: Or Kán (13260)
Or Kán Creative Commons License 2010.11.15 0 0 13261

Egyébként mit értesz "normális dátumformátum" alatt? És mi van a "J", illetve a "K" oszlopban?

Előzmény: Bizakodóvagyok (13257)
Or Kán Creative Commons License 2010.11.15 0 0 13260

Nem ez a probléma, de ezen a soron fennakadt a szemem:

 

x = Range("A65536").End(xlUp).Row

 

Ez olyan bal kézzel vakarom a jobb fülemet, nem?

 

Miért nem ezt alkalmazod?

 

x = Range("A1").End(xlDown).Row

 

(Nem is beszélve arról, hogy a 2007-es excelben már nem 65536 sor van egy munkalapon - ha már mindenképpen a végéről akarod kezdeni, hanem 1048576.)

 

Bocsánat, hogy közbeszóltam.

Előzmény: Bizakodóvagyok (13257)
Aata1 Creative Commons License 2010.11.15 0 0 13259

Nagyon köszönöm a segítséget, megoldódtak a gondok! :D

Előzmény: Törölt nick (13256)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13258

*Elakadtam egy feladattal, ezért fordulok hozzátok. :)

Előzmény: Bizakodóvagyok (13257)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13257

Sziasztok!

 

 Elakadtam egy, ezért fordulok hozzátok.

 Excel 2007-ben készítek pár makrót. (igen, tudom… a 2003-at én is jobban szerettem :D)

 

 Ebből a formátumból kell normális dátumformátumot csinálnom („J” és „K” oszlopokban vannak):

26.8.2037

9.9.2037

22.11.2036

11.7.2037

12.9.2037

28.8.2037

24.8.2037

3.9.2037

 

Ehhez ezt barkácsoltam össze:

 

    Dim x As Integer

    Dim i As Integer

    Dim Rng As Range

    Dim rngCel As Range

    Dim strDatum As String

    Dim bytNap As Byte

    Dim bytHonap As Byte

    Dim intEv As Integer

 

x = Range("A65536").End(xlUp).Row

Set Rng = Range("J2:K" & x)

    For Each rngCel In Rng

        With rngCel

        strDatum = .Offset(, 0)

                  If InStr(strDatum, ".") > 0 Then

                bytNap = Trim(Left(strDatum, InStr(strDatum, ".") - 1))

                strDatum = Trim(Mid(strDatum, InStr(strDatum, ".") + 1))

                bytHonap = Trim(Left(strDatum, InStr(strDatum, ".") - 1))

                intEv = Trim(Right(strDatum, 4))

                .Formula = Format(intEv & "." & bytHonap & "." & bytNap, "yyyy/m/d")

            End If

        End With

    Next

 

 

 

A problémám:

Az eredmény a cella bal oldalához van igazítva, tehát olyan, mintha szövegformátum lenne. (A formátuma általános.) Emiatt raktam be a végére a Format-ot az eredménybe, ami teljesen felesleges amúgy (sztem).

A lényeg: ha átállítom szám- vagy dátumformátumra, akkor továbbra is ott marad a bal oldalán a cellának, ezért „Type mismatch” miatt nem tudok vele számolásokat végezni. Ha nyomok egy F2-t vagy duplaklikket a cellán, majd átkattintok másik cellára, akkor azonnal jó lesz a korábban beállított formátum. Nem tudok rájönni, hogy mi a baj, mert a makrórögzítés sem árul el semmit, mert a kód alapján egyszerű értékadásról van szó.

 

Segítségeteket előre is köszönöm! J

Üdv,

B.

 

Törölt nick Creative Commons License 2010.11.15 0 0 13256

Nézd meg, hogy van-e a

C:\Documents and Settings\(user)\Application Data\Microsoft\Excel\XLSTART

mappában egy personal.xls fájl.

Ha van, töröld ki. Vagy talán jobb, ha átnevezve elmented valahová. Ez a fájl ugyanis általában úgy keletkezik, hogy makrót rögzítesz benne. Azokra meg még szükséged lehet.

Előzmény: Aata1 (13254)
wawabagus Creative Commons License 2010.11.15 0 0 13255

:-)))...

Ugyanabba a hibába estél, mint én.

Elvileg az normális, ha a háttérben ott van a Personal.xls, de persze nem így, mint neked.

 

Nálam a hiba abból jött, hogy definiáltam az actuális munkafütetet, ami nyitva van (mivel VBA-ban és personalban dolgoztam ez pont ez a fájl volt), aztán mentettem a makróban az "akutális munkafüzetet", ami a Personal volt.

 

Ezt a momentumot kell megtalálni és korrigálni a makróbal /remélem jól írtam...javítsatok, ha hülyeségeket beszélek/.

 

Én kijavítottam, hogy máshogy definiálja az "aktív munkafüzetet" és töröltem a plusz Personal-! az excel folderből.

 

 

Előzmény: Aata1 (13254)
Aata1 Creative Commons License 2010.11.15 0 0 13254

Sziasztok!

 

Talán emlékesztek, hogy kérdezgettem itt a makrókról ezt-azt. Na most úg yelállítottam a dolgokat, hogy jelenleg minden egyes Excel megnyitásakor vele együtt nyílik egy PESONAL.xls fájl is. Miért? Hogy tudom leállítani?

A helyes megoldás beküldői között "Köszönöm"-öt sorsolunk ki!

 

A.

Delila10 Creative Commons License 2010.11.15 0 0 13253

Szívesen. :)

Előzmény: wawabagus (13252)
wawabagus Creative Commons License 2010.11.15 0 0 13252

Szia!

Most reggel gondolkoztam és rájöttem arra, hogy a makródba be lehetne iktatni egy olyat, hogy lellenőrizné, hogy copizott-e már be ilyen sort :-)....

 

De amit írtál még jobb :-)!!

Nagyon nagyon köszönöm!!

 

Y

Előzmény: Delila10 (13246)
Törölt nick Creative Commons License 2010.11.13 0 0 13251

A "Count" ismert előttem - tehát azt értetted, amire gondoltam. Keresgéltem, de nem találtam használható forrást - alighanem végig kell lépkedni az elemeken és megszámolgatni külön. Aban bíztam,

hogy van erre valami metódus...

Előzmény: SQLkerdes (13250)
SQLkerdes Creative Commons License 2010.11.13 0 0 13250

A benne lévő Item-ek számát a Count adja meg, de gondolom nem erre gondolsz.

Ha ez igaz, akkor a kérdésed azért furcsa, mert amikor értéket adtál a Collection elemeinek, akkor látszódik, hogy melyik elem, hanyadik lesz.  Oda nem tudsz "visszamenni" és a forrásnál kitalálni az Item index-ét?

Előzmény: Törölt nick (13244)
Törölt nick Creative Commons License 2010.11.13 0 0 13249

Elnézést.

(Operában kiszedi a tabos tagolásokat de legalább nem egy sorba teszi)

Előzmény: Törölt nick (13248)
Törölt nick Creative Commons License 2010.11.13 0 0 13248

Sub wer()
asdasd
asdfasd
sdasdasd
End Sub 

Delila10 Creative Commons License 2010.11.13 0 0 13247

Sub mm()
    Cells(1).Interior.ColorIndex = 3
End Sub

 

Ez egy próba Firefoxból, enterezgetések nélkül. Az előnézet szerint innen működik.

Delila10 Creative Commons License 2010.11.13 0 0 13246

Kibővítettem a makrót az egyformák megszüntetésével:

 

Sub veletlen()

   Dim db As Integer, sor As Integer, sor_1 As Integer

   Dim usor As Integer, f As Boolean

 

   Sheets(1).Select

   usor = ActiveSheet.UsedRange.Rows.Count

   db = InputBox("Hány sort akarsz másolni?", , Default)

   sor_1 = 2

   For i = 1 To db

        sor = Int(Rnd() * usor) + 1

 

        'ehelyett jöhet a másolós sorod

        Rows(sor).EntireRow.Copy Sheets(2).Rows(sor_1)

        sor_1 = sor_1 + 1

   Next

 

   'rendezés

   Sheets(2).Select

   db = db + 1

   Range("A2:B" & db).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _

        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

        DataOption1:=xlSortNormal

 

   Do

        For i = 3 To db

            If Cells(i, 1) = Cells(i - 1, 1) Then

                sor = Int(Rnd() * Rnd() * usor) + 1

                Cells(i, 1) = Sheets(1).Cells(sor, 1)

                f = True

            End If

        Next

   Loop While f = False

 

End Sub

 

 

Kínos ez az enterezgetés, az előnézethez fukar kezekkel méri az időt, nem lehet mindent ellenőrizni.

Már megírtam a http://forum.index.hu/Article/showArticle?t=9111587 helyen, de nem kaptam választ. Akinek szintén nem tetszik ez az új módi, írja meg a jelzett címen, hátha nagyobb lesz foganatja.

Előzmény: wawabagus (13242)
Delila10 Creative Commons License 2010.11.13 0 0 13245

Szia!

 

Próbáltam több véletlent tenni [sor = Int(Rnd() * Rnd() * usor) + 1; sor=Int(Rnd()*sor)+1; ], de minél nagyobb a választott darabszámod, annál nagyobb a valószínűsége, hogy azonosak lesznek közöttük.

 

Meg lehet variálni, hogy a "kisorsolt" adatokat rendezed, egy ciklusban ellenőrzöd, hogy van-e azonos közöttük, annak a helyére másik sort sorsolsz.

Előzmény: wawabagus (13242)
Törölt nick Creative Commons License 2010.11.12 0 0 13244

tehát, hogy egy gyűjtemény hányadik eleme xy. nehogy már for ciklussal kelljen megszámolni vagy ilyesmi

Előzmény: Törölt nick (13243)
Törölt nick Creative Commons License 2010.11.12 0 0 13243

Ki tudja: egy Collection "Item" számát hogy tudom kinyerni egy változóba?

wawabagus Creative Commons License 2010.11.12 0 0 13242

Szia!

Delila_10!

Kipróbáltam a megoldásod és szuper működik.

Viszont van egy bibi, ami a randbetween függvényél is felmerül.

Többször is kisorsolhatja ugyanaz a számot...amit itt most nem szabadna neki :-D...

 

Hmm...hmm, pedig annyira szuperul összeeszkábáltam a segítségeddel az egészet.

De ez így mégsem jó, minden sor csakis egyszer szerepelhet a random listában...

 

Hmmm...tovább kell gondolkodni. De már nincs erőm :-DDD...

De nagyon köszönöm ezt a randomos dolgot....nagyon frappáns. Biztos hogy fogom még használni.

 

Jó hétvégét mindenkinek!!

:-)

y

Előzmény: Delila10 (13240)
Törölt nick Creative Commons License 2010.11.11 0 0 13241

Hát igen... én sem gondoltam hogy így intézik el. Úgy biztosan 5 kattintás lett volna, így meg csak 1. Még azt el tudom képzelni, hogy fizikailag nincs törölve, csak "1-2 pipát kivettek" valahonnan.

Előzmény: Delila10 (13240)
Delila10 Creative Commons License 2010.11.11 0 0 13240

Szóvá tettem, meg azt is, hogy a másik exceles fórumot nem így, végleg kellett volna megszüntetni, hanem olvasásra továbbra is nyitva állhatna. Kár eltüntetni az ott feltett kérdéseket, és a rájuk adott sok választ.

Azt is be kellett volna írnom, hogy onnan egy link ide vezethetné az olvasót.

Előzmény: Törölt nick (13238)
wawabagus Creative Commons License 2010.11.11 0 0 13239

Köszi szépen neked is!!

:-)

Előzmény: Or Kán (13236)
Törölt nick Creative Commons License 2010.11.11 0 0 13238

Biztos észrevetted, átkopiztad a platformról a kódot, a szerkesztőben jól megjelent de a fórumon nem. Én is beraktam entereket az átkopizás után - így üres sorközök lettek -  és utána jó lett.

A fő fórumoldalon ha jól láttam van valami teszt topik biztos lehet szólni - ha még més nem tette meg.

Előzmény: Delila10 (13234)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!