abonnement Unibet Coolblue
  maandag 1 maart 2010 @ 16:03:50 #51
249182 Holy_Goat
mhèèhèhè
pi_78594626
(hoe doe jij dat geautomatiseerd mailen btw?)
  maandag 1 maart 2010 @ 16:43:20 #52
134944 Hi_flyer
Van alles te melden
pi_78596313
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub SendMail(location)
    'msg
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim FilenameStr As String
    Dim ccaddress As String
    Dim name As String
    MakeFileForEmail
    name = Range("D5")
    ccaddress = Range("N8")
        Set OutApp = CreateObject("Outlook.Application")
        OutApp.Session.Logon
        Set OutMail = OutApp.CreateItem(0)
 
        strbody = "Hi xxx," & vbNewLine & vbNewLine & _
            runbody
 
        On Error Resume Next
        With OutMail
            .to = "xxx@xx.nl"
            .CC = ccaddress
            .BCC = "xxx@xx.nl"
            .Subject = "bladiebla request from " & name
            .Body = strbody
            .Display   'or use .Send
        End With
        On Error GoTo 0
        MsgBox "Email sent to xxx, xxx and " & name & "!"

        Set OutMail = Nothing
        Set OutApp = Nothing

End Sub


De body van de e-mail maak ik in een subje. Het is dus vrij eenvoudig. Een nadeel is dat je besturingssysteem een waarschuwing geeft als je .send in plaats van .display doet. Anders zou je eenvoudig een macro kunnen schrijven waarmee je een mailserver aardig kan belasten/platleggen.

Overigens kan je als je wilt wel 'onetische zaken' uitvoeren met excel. Ik kan bijv (doe ik niet) mailtjes van collega's lezen mbv Excel of hun persoonlijke agenda inkijken, of hun 'my documents' leegtrekken.
  maandag 1 maart 2010 @ 16:52:40 #53
249182 Holy_Goat
mhèèhèhè
pi_78596705
Die sub gebruik ik ook bijna letterlijk voor een koppeling met CRM.
Ik heb wel een leuk progsel voor je overigens om de .display wel te laten werken met .send
Verder nog een ander leuk ding: automatisch tabs bij stukjes "vieze" code inbrengen met 1 rechtermuisknop in vba. Per procedure, module, project, etc.

auto indent
outlook advanced security (mapilab)
  maandag 1 maart 2010 @ 16:54:05 #54
249182 Holy_Goat
mhèèhèhè
pi_78596763
quote:
Op maandag 1 maart 2010 16:43 schreef Hi_flyer het volgende:

[ code verwijderd ]

De body van de e-mail maak ik in een subje. Het is dus vrij eenvoudig. Een nadeel is dat je besturingssysteem een waarschuwing geeft als je .send in plaats van .display doet. Anders zou je eenvoudig een macro kunnen schrijven waarmee je een mailserver aardig kan belasten/platleggen.

Overigens kan je als je wilt wel 'onetische zaken' uitvoeren met excel. Ik kan bijv (doe ik niet) mailtjes van collega's lezen mbv Excel of hun persoonlijke agenda inkijken, of hun 'my documents' leegtrekken.
onethische zaken kun je met alle programmeertalen. Maarja, daar doe je het (meestal) niet voor he
  maandag 1 maart 2010 @ 17:16:22 #55
62215 qu63
..de tijd drinkt..
pi_78597752
in VBA is het ook leuk om autimagisch een random scheldwoord neer te gooien in je document Maar dat werkt natuurlijk alleen als je op een gedeelde pc werkt..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  maandag 1 maart 2010 @ 17:18:07 #56
249182 Holy_Goat
mhèèhèhè
pi_78597810
quote:
Op maandag 1 maart 2010 17:16 schreef qu63 het volgende:
in VBA is het ook leuk om autimagisch een random scheldwoord neer te gooien in je document Maar dat werkt natuurlijk alleen als je op een gedeelde pc werkt..
of als je behorlijk schyzo bent

Maar serieus... vba kan behoorlijk schadelijk zijn als je niet weet wat het doet (als je het krijgt van iemand).
Op middelbare eens een excel bestand rondgestuurd. Als macro opende sloopte die alles wat niet beveiligd was uit de program files maarja, laten we zeggen dat het onschuldig vermaak was. Achteraf had ik ook niet gedacht dat iemand ook echt op de knop 'kill my program files' zou drukken.

nee. ben er niet trots op... en doe dit soort apenkool niet meer
pi_78607988
ëén goedenavond!!

Het volgende probleem in excel...

#waarde!

wat nu?
pi_78608678


Ik probeer het volgende:

"= + selectie van een rij ENTER'

Dan dus die melding....
Gaat in de rest van het werkblad ok, sommige vakken geven deze melding...

Alvast bedankt voor de hulp!
  maandag 1 maart 2010 @ 21:23:06 #59
249182 Holy_Goat
mhèèhèhè
pi_78610335
zorg wel ff dat al die cellen geselecteerd ook daadwerkelijk getallen bevatten.
  dinsdag 2 maart 2010 @ 10:22:24 #60
85514 ralfie
!Yvan eht nioj
pi_78626080
@Hi_flyer

besef je wel dat dit

dim a, b, c as String

hetzelfde is als
dim a as variant, b as variant, c as string?

en je dus eigenlijk
dim a as string, b as string, c as string
bedoelt?

Verder nutteloze opmerking, maar wel een beetje snelheidswinst.
pi_78627017
quote:
Op dinsdag 2 maart 2010 10:22 schreef ralfie het volgende:
@Hi_flyer

besef je wel dat dit

dim a, b, c as String

hetzelfde is als
dim a as variant, b as variant, c as string?

en je dus eigenlijk
dim a as string, b as string, c as string
bedoelt?

Verder nutteloze opmerking, maar wel een beetje snelheidswinst.
Volgens de VBA help niet: http://msdn.microsoft.com/en-us/library/7ee5a7s1(VS.80).aspx

halverwege de pagina staat de volgende code namelijk
1
2
Dim a, b, c As Single, x, y As Double, i As Integer
' a, b, and c are all Single; x and y are both Double
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
  dinsdag 2 maart 2010 @ 10:50:24 #62
249182 Holy_Goat
mhèèhèhè
pi_78627059
Ralfie, ben ik niet met je eens.

Kijk ook even hier
quote:
Different Types.
You can specify different data types for different variables by using a separate As clause for each variable you declare. Alternatively, you can declare several variables to be of the same type by using a common As clause. Each variable takes the data type specified in the first As clause encountered after its variablename part.

Dim a, b, c As Single, x, y As Double, i As Integer
' a, b, and c are all Single; x and y are both Double;
  dinsdag 2 maart 2010 @ 10:50:51 #63
249182 Holy_Goat
mhèèhèhè
pi_78627079
whehehe net ff eerder jij
  dinsdag 2 maart 2010 @ 10:53:44 #64
85514 ralfie
!Yvan eht nioj
pi_78627179
Grappig

1
2
3
Dim a As String, b, c As String
    a = 12
    MsgBox TypeName(a)

geeft string
terwijl
1
2
3
Dim a, b, c As String
    a = 12
    MsgBox TypeName(a)

geeft integer

probeer maar!
  dinsdag 2 maart 2010 @ 10:57:54 #65
249182 Holy_Goat
mhèèhèhè
pi_78627343
Hmm ralfie, das inderdaad waar :s
Naja, gelukkig dim ik alles stuk voor stuk altijd, met

dim a as string
dim b as string
dim c as string

maar het is wel erg raar dat dit zo werkt!
pi_78628512
Heel bizar:
1
2
3
4
5
6
7
8
9
10
11
Sub dimtest1()

Dim a, b, c As String

a = 12
b = 12
c = 12

MsgBox TypeName(a) & TypeName(b) & TypeName(c)

End Sub

Geeft integer integer string

1
2
3
4
5
6
7
8
9
10
11
12
Sub dimtest2()

Dim a As String
Dim b, c As String

a = 12
b = 12
c = 12

MsgBox TypeName(a) & TypeName(b) & TypeName(c)

End Sub

Geeft string integer string

Blijkbaar wordt alleen de laatste variabele echt gedimd. Is dus niet Zoals het door microsoft wordt uitgelegd.
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
pi_78629135
Wat vaag! Ik was ook altijd in de veronderstelling dat ze allemaal als String gedimd werden!
Dat verklaart wel wat, maar meestal Dim ik ze ook stuk voor stuk zoals Holy.
pi_78630307
De uitleg die ik en holy-goat vonden blijkt dus voor de "echte" visual basic en dot-net visual basic te zijn. Daar werkt dat wel zoals wij zeiden maar bij visual basic for applications (VBA) werkt het dus blijkbaar toch weer anders.
Het is dus zaak om in excel al je variabelen apart te DIMmen of in ieder geval in de gaten houden dat alleen de laatste variabele in een DIM rijtje echt geDIMt wordt en de rest variant blijft totdat er gegevens in de variabele worden gedouwd.
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
  dinsdag 2 maart 2010 @ 12:11:50 #69
134944 Hi_flyer
Van alles te melden
pi_78630561
Wow dit is nieuw voor me en wellicht ook belangrijk. Ik dim vaak een rijtje variabelen en op deze manier vreet dat wel wat geheugen (netwerk is hier meer de bottleneck though).
  dinsdag 2 maart 2010 @ 12:26:42 #70
249182 Holy_Goat
mhèèhèhè
pi_78631154
Even tussen haakjes: aangezien ik mezelf alles aangeleerd heb wat vba betreft:

zijn er wat stukken tekst die ik echt gelezen móet hebben? Ik heb vaak het idee dat ik nog best "ranzig" programmeer namelijk.

En momenteel doe ik alles nog in vba behorende bij office 2003. Zou ik stiekem wel eens een keer .net moeten gaan leren?

Verder nog een subvraagje:
Kan ik sub of subsubclasses maken in vba?
Voorbeeld: variabele diersoorten.kat.poot.lengte
pi_78631502
Holy, wat ikzelf wel belangrijk vind mbt 'netjes' programmeren zijn
- Inspringen voor bv loops en Ifs
- Leszynski naming convention voor controls en variables: http://en.wikipedia.org/wiki/Leszynski_naming_convention
pi_78632346
quote:
Op dinsdag 2 maart 2010 12:26 schreef Holy_Goat het volgende:
Even tussen haakjes: aangezien ik mezelf alles aangeleerd heb wat vba betreft:

zijn er wat stukken tekst die ik echt gelezen móet hebben? Ik heb vaak het idee dat ik nog best "ranzig" programmeer namelijk.

En momenteel doe ik alles nog in vba behorende bij office 2003. Zou ik stiekem wel eens een keer .net moeten gaan leren?

Verder nog een subvraagje:
Kan ik sub of subsubclasses maken in vba?
Voorbeeld: variabele diersoorten.kat.poot.lengte
Leer arrays te gebruiken, dat heeft mij ontzettend veel ruimte en snelheid opgeleverd. Zeker als je bepaalde handelingen door een hele sheet wilt uitvoeren.
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
  dinsdag 2 maart 2010 @ 14:07:16 #73
85514 ralfie
!Yvan eht nioj
pi_78635072
quote:
Op dinsdag 2 maart 2010 12:26 schreef Holy_Goat het volgende:
Even tussen haakjes: aangezien ik mezelf alles aangeleerd heb wat vba betreft:

zijn er wat stukken tekst die ik echt gelezen móet hebben? Ik heb vaak het idee dat ik nog best "ranzig" programmeer namelijk.
De allerbelangrijkste eye-opener voor mij was dat een range in een keer omgezet kan worden naar een variant (als array)

Dim w as variant
w = range(a1:b2);
MsgBox w(1,1)

en dit is vele malen sneller als met for en/of foreach door je cellen te gaan

andersom kan ook

range(a1:b2) = w

als je dus een berekening gaat doen op een zooi cellen, stop de waarden dan in een variant, doe je berekening, en zet je waarden terug.


Vergelijk
1
2
3
4
5
6
7
8
Dim w As Variant
    w = Range("A1:Z1502")
    For x = 1 To UBound(w)
        For y = 1 To UBound(w, 2)
            w(x, y) = w(x, y) * 26 + 45 / 7 + w(x, y)
        Next y
    Next x
    Range("AA1:AZ1502") = w


versus
1
2
3
4
For Each cell In Range("A1:Z1502")
        q = cell.Value
        cell.Offset(0, 26).Value = q * 26 + 45 / 7 + q
    Next cell

De eerste code is bij deze range vol random getallen 100 x sneller, bij application.screenupdating =false en applicaiton.calculation=xlmanual nog zeker 10x sneller. Geen overbodige luxe bij een taaltje waarvan snelheid toch wel het grootste probleem is (mijns inziens)
  dinsdag 2 maart 2010 @ 14:17:43 #74
249182 Holy_Goat
mhèèhèhè
pi_78635506
Arrays gebruik ik té vaak
Maar vraag me soms wel af of dingen niet sneller kunnen, dat is in mijn geval vaak ook een bottleneck.
Ik heb soms arrays met 100.000+ waarden, en dan wil ik snel wat opzoeken in die array, maar dan wel 1000x achter elkaar iets opzoeken. Dan is een for loop gewoon te traag. (gebruik een binary search methode).

Waar ik me nu nog aan stoor soms is langzaam inladen van data.
Een sheet met 8 kolommen en een x aantal rijen (niet van te voren bekend) wil ik dan naar 8 aparte arrays schrijven. (niet naar een X * 8 2dim array). Ik doe dat nu nog door een while loop te gebruikend die data inleest (steeds redimensionen ook) tot de arrays gevuld zijn. Dit kan dus veel sneller ralph?

Voorbeeld van bestand: hier

Ook zou ik dus graag die subclasses willen gebruiken als mogelijk.

Verder gebruik ik gelukkig wel tabs, en gebruik veel comments
Alleen zijn mijn debug technieken volgens mij niet zo best.
Error handlers inbouwen ook niet. daar zou ik wel wat beter in willen worden.

[ Bericht 8% gewijzigd door Holy_Goat op 02-03-2010 14:23:43 ]
pi_78635835
quote:
Op dinsdag 2 maart 2010 14:07 schreef ralfie het volgende:

[..]

De allerbelangrijkste eye-opener voor mij was dat een range in een keer omgezet kan worden naar een variant (als array)

Dim w as variant
w = range(a1:b2);
MsgBox w(1,1)

Wist ik niet.
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')