kunde

kunde profiilikuva
Joulu 2024
Vapaa kuvaus

Isaan Rules WFF CCC If you walked away smiling-then for you the price was right Keep Exceling Suosikkibändit/artistit: Queen, Rammstein, genesis, Bruce Bringsteen, Kino, Mandref Mann Earth band Who Lempikirjat: ohjelmointi... Suosikkipalstat Suomi24 Keskusteluissa: EXCEL, Kivitalot, EPS En pidä: pakkanen ja loskakelit Ruoka & juoma: loimulohi ja valkkari Linkit: http://www.kundepuu.com, Khorat Koulutus: --- Ammatti: Tiede/teknologia Työskentelen: freelancer Ase tai siviilipalvelus: yliluutnantti Siviilisääty: Varattu Lapset: --- Hakusanat: Thaimaa, korat, Excel, VBA, ACAD, CNC, Polyurea, EPS, MgO elementti

Liittynyt 20v sitten
7 aloitusta · 1377 kommenttia
Uusimmat aloituksetSuosituimmat aloituksetUusimmat kommentit
Function EtsiJaSiirrä2(Hakuehto As Variant, Taulukko As String, Alue As String) As Range
Dim solu As Range
Dim EkaOsoite As String
Worksheets(Taulukko).Activate
With Range(Alue)
Set solu = .Find( _
What:=Hakuehto, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
If Not solu Is Nothing Then
Set EtsiJaSiirrä2 = solu
EkaOsoite = solu.Address
Do
Set EtsiJaSiirrä2 = Union(EtsiJaSiirrä2, solu)
Set solu = .FindNext(solu)
Loop While Not solu Is Nothing And solu.Address EkaOsoite
End If
End With
End Function

Sub Testi2()
Dim Löydetty As Range
Dim solu As Range
Dim laskuri As Integer
Sheets("viat").Rows("2:65536").Delete
Range("A2").Select
Set Löydetty = EtsiJaSiirrä2("vika", "välilehti1", "I:I")
If Not Löydetty Is Nothing Then
For Each solu In Löydetty
Union(solu.Offset(0, -8), solu.Offset(0, -7), solu.Offset(0, -6)).Copy Range("viat!A65536").End(xlUp).Offset(1, 0)
laskuri = laskuri + 1
Next
End If

Set Löydetty = EtsiJaSiirrä2("vika", "välilehti2", "I:I")
If Not Löydetty Is Nothing Then
For Each solu In Löydetty
Union(solu.Offset(0, -8), solu.Offset(0, -7), solu.Offset(0, -6)).Copy Range("viat!A65536").End(xlUp).Offset(1, 0)
laskuri = laskuri + 1
Next
End If

Set Löydetty = EtsiJaSiirrä2("vika", "välilehti3", "E:E")
If Not Löydetty Is Nothing Then
For Each solu In Löydetty
Union(solu.Offset(0, -4), solu.Offset(0, -3), solu.Offset(0, -2)).Copy Range("viat!A65536").End(xlUp).Offset(1, 0)
laskuri = laskuri + 1
Next
End If

Set Löydetty = EtsiJaSiirrä2("vika", "välilehti4", "E:E")
If Not Löydetty Is Nothing Then
For Each solu In Löydetty
Union(solu.Offset(0, -4), solu.Offset(0, -3), solu.Offset(0, -2)).Copy Range("viat!A65536").End(xlUp).Offset(1, 0)
laskuri = laskuri + 1
Next
End If

Set Löydetty = EtsiJaSiirrä2("vika", "välilehti5", "E:E")
If Not Löydetty Is Nothing Then
For Each solu In Löydetty
Union(solu.Offset(0, -4), solu.Offset(0, -3), solu.Offset(0, -2)).Copy Range("viat!A65536").End(xlUp).Offset(1, 0)
laskuri = laskuri + 1
Next
End If
If laskuri = 0 Then
MsgBox "Ei vika tapauksia!", vbInformation
Else
MsgBox "vika tapauksia löytyi " & laskuri & " kpl!", vbInformation
End If
End Sub
toi koodin pätkä.
Mutta jos siis haluat tehdä kaavion ja lisätä siihen trendiviivan, niin miksi et lisää sitä heti kun teet kaavion?
Jotain tämöstä siis, eli ei ole viitausongelmia...

Sub LisääKaavio()
With ActiveSheet.ChartObjects.Add(Left:=300, Width:=400, Top:=50, Height:=300)
.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:A10")
.Chart.ChartType = xlXYScatter
.Chart.SeriesCollection(1).Trendlines.Add
.Chart.SeriesCollection(1).Trendlines(1).DisplayEquation = True
.Chart.SeriesCollection(1).Trendlines(1).DisplayRSquared = True
End With
End Sub
Kyllä makrojen pitäisi periaatteessa toimia nopeammin. Eroa tuskin huomaa ennenkuin kyseessä on sitten isot työkirjat ja paljon laskentaa ja editointia ja taustalla paljon avoimia ohjelmia.

hiukan valaisua asiaan

32 bittisen max muistin käyttö on 4GB, mikä rajoittaa siis myös Excelin nopeutta jos avoimia ohjelmia, työkirjoja on enmmän auki. Eli joutuu sumplimaan vapaan tilankäytön kanssa. Toisaalta on turha asentaa muistia koneeseen yli 4 GB jos käytössä on 32 bittinen systeemi, koska se ei voi käyttää yli 4 Gb muistiavaruutta!
64 biitisen muistiavaruus on sitten jo 17 miljoonaa GB. Tästä syystä muistiakin on enemmän käytössä olettaen, että koneessa itsessäänkin on lisätty tarpeeksi muistikampoja... )-;

Kumpi versio sitten 64 bittiseen windowsiin?

Oletuksena Office asentuu aina 32 bittisenä.

Jos tiedostokoot excelissä on alle 2GB ja ei tehdä massiivisia toimituksia parempi pysytellä 32 bittisessä versiossa. Jos 64 bittinen Windows niin se rajoittaa 32 bittisten excelmakrojen käyttöä, koska 64 bittinen ei tue 32 biitisiä ActiveX , COM ja monia 3 osapuolentekemiä apuohjelmia, sekä Excelin omia kontrolleja aikaisemmista versioista jotka ovat vain 32 bittisiä.
64 bittisessä officessa voit tehdä koodia myös 32 bittisenä, mutta pitää varmistaa, että oikeat muuttujat ovat käytössä 64 bittisessä tehdyssä koodissa, jotta se toimisi myös aiemmissa versioissa. Eli voit tehdä koodia "jossittelemalla", joka sitten toimii sekä 32 bittisessä, että 64 bittisessä ympäristössä
Ongelmat voidaan korvata käännösohjelmilla. Ei oo tietoa kuinka hyvin toimii?

eli summa summarum
el ihyvällä säkääl 32 bittinen makro siis toimii nopeammin, mutta ei kuitenkaan 2 kertaa vaan luokkaa 1.2-1.5. Jostain foorumilta luin , että odottavat ekaa koodin pätkää, joka toimisi 2 kertaa nopeammin, mutta eipähän ole vastauksia näkynyt...
Siis ainoa hyöty tällä hetkellä on isojen tiedostojen yli 2 GB käyttö 64 bittisellä...

toka kyssäri
onnistuu...
muodostat excel objektin ja sitten koodissa jotai tommosta
esim. suorittaa ExcelApp-objektissa makron TestiMakro. Makrollehan voi syöttää myös parametrejä, mutta ohjeethan löytyy helpistä.

ExcelApp.Run('TestiMakro')