De Excel-vraagbaak van Hans66
maandag 13 juni 2011 om 23:38
Stel hier jullie vragen over Excel 2010. Andere versies zullen ook wel bruikbaar zijn als enkelen van jullie bijv. werken met Excel 2007.
Ik zal jullie vragen beantwoorden. Als ik geen tijd heb of het antwoord niet weet, kan een andere forummer ook die vraag beantwoorden.
Dus... brand maar los!
Ik zal jullie vragen beantwoorden. Als ik geen tijd heb of het antwoord niet weet, kan een andere forummer ook die vraag beantwoorden.
Dus... brand maar los!
World of Warcraft: Legion
vrijdag 24 juni 2011 om 00:12
Kaaaaaaaatje,
Ik vind het wel raar dat het plaatje niet intact blijft. Er zullen zich situaties voortdoen waarbij men een plaatje wil plakken bij wat tabellen. En zo heb ik wel meer bugs in Excel 2010 ontdekt.
Binnenkort komt overigens Office 365 eraan, maar ik weet de verschillen van Office 2010 en 365 nog niet. Er is een beta-versie voor bedrijven te downloaden, om het uit te proberen en bugs aan Microsoft te melden.
Ik vind het wel raar dat het plaatje niet intact blijft. Er zullen zich situaties voortdoen waarbij men een plaatje wil plakken bij wat tabellen. En zo heb ik wel meer bugs in Excel 2010 ontdekt.
Binnenkort komt overigens Office 365 eraan, maar ik weet de verschillen van Office 2010 en 365 nog niet. Er is een beta-versie voor bedrijven te downloaden, om het uit te proberen en bugs aan Microsoft te melden.
World of Warcraft: Legion
vrijdag 24 juni 2011 om 12:23
Ik had vandaag een aardig programmeerklusje. Mijn collega had een jaarrooster gemaakt met Excel, en haar vraag aan mij is om daarvan een kopie te maken en alle inhoud te wissen. Daarna moesten de weeknummers de dagen en de data weer op de juiste plek worden ingevuld voor schooljaar 2011-2012 op dezelfde wijze zoals dat ook was voor schooljaar 2010-2011 voor het wissen.
Een uitdagende klus, maar ik had dat binnen 10 minuten voor elkaar. Ik heb daarvoor in VBA (Visual Basic for Applications) moeten programmeren. Collega helemaal tevreden: "Kijk, aan jou heb ik wat!"
Een uitdagende klus, maar ik had dat binnen 10 minuten voor elkaar. Ik heb daarvoor in VBA (Visual Basic for Applications) moeten programmeren. Collega helemaal tevreden: "Kijk, aan jou heb ik wat!"
World of Warcraft: Legion
dinsdag 30 augustus 2011 om 22:17
donderdag 15 september 2011 om 16:42
Hans, ik heb je hulp nodig (had ook al een ander topic geopend, maar werd hierheen verwezen):
Ik heb in een kolom een lijst met woorden in excel (zoiets als kat, hond, kat, cavia).
Nu wil ik ze in de volgende kolom opzetten naar een code, dus alle katten krijgen de code 1, honden worden 2, etc.
Het zijn heel veel woorden, die ik kan indelen in ongeveer 20 klassen, en ik weet dat je dat kan doen met een formule, maar ik weet niet meer hoe. Kun jij (of iemand anders) mij helpen?
Ik heb in een kolom een lijst met woorden in excel (zoiets als kat, hond, kat, cavia).
Nu wil ik ze in de volgende kolom opzetten naar een code, dus alle katten krijgen de code 1, honden worden 2, etc.
Het zijn heel veel woorden, die ik kan indelen in ongeveer 20 klassen, en ik weet dat je dat kan doen met een formule, maar ik weet niet meer hoe. Kun jij (of iemand anders) mij helpen?
donderdag 15 september 2011 om 22:26
Ik heb een Visual Basic-macro gemaakt:
Dim Woorden(20) As String
Dim Aantal
Function ZoekWoordOp(w As String)
Index = 0
While Index < Aantal
If Woorden(Index) = w Then 'Gevonden
ZoekWoordOp = Index
Exit Function
End If
Index = Index + 1 'Zoek verder
Wend
ZoekWoordOp = -1
End Function
Function VoegWoordToe(w As String)
Woorden(Aantal) = w 'Voeg als nieuw woord in tabel
VoegWoordToe = Aantal 'Geef de nieuwe index terug
Aantal = Aantal + 1
End Function
Sub VoegCodesToe()
Aantal = 0
Rij = 1
While Cells(Rij, 1) <> "" 'Kijk naar volgende cel
Code = ZoekWoordOp(Cells(Rij, 1)) 'Zoek woord op
If Code = -1 Then 'Niet gevonden?
Code = VoegWoordToe(Cells(Rij, 1)) 'Voeg toe
End If
Cells(Rij, 2) = Code + 1 'Zet de index in de tabel
Rij = Rij + 1 'Pak volgende woord
Wend
End Sub
Dim Woorden(20) As String
Dim Aantal
Function ZoekWoordOp(w As String)
Index = 0
While Index < Aantal
If Woorden(Index) = w Then 'Gevonden
ZoekWoordOp = Index
Exit Function
End If
Index = Index + 1 'Zoek verder
Wend
ZoekWoordOp = -1
End Function
Function VoegWoordToe(w As String)
Woorden(Aantal) = w 'Voeg als nieuw woord in tabel
VoegWoordToe = Aantal 'Geef de nieuwe index terug
Aantal = Aantal + 1
End Function
Sub VoegCodesToe()
Aantal = 0
Rij = 1
While Cells(Rij, 1) <> "" 'Kijk naar volgende cel
Code = ZoekWoordOp(Cells(Rij, 1)) 'Zoek woord op
If Code = -1 Then 'Niet gevonden?
Code = VoegWoordToe(Cells(Rij, 1)) 'Voeg toe
End If
Cells(Rij, 2) = Code + 1 'Zet de index in de tabel
Rij = Rij + 1 'Pak volgende woord
Wend
End Sub
World of Warcraft: Legion
zaterdag 17 september 2011 om 08:17
Voor wie het toch wil proberen:
- Zet de woorden vanaf cel A1 onder elkaar, dus in A1, A2, A3, A4, etc.
- Druk op Alt-F11. Dan wordt het VBA-venster geopend;
- Kies Invoegen | Module;
- Plak de bovenstaande code in bericht van 15 september 22:26 in het grootste deel van dat venster;
- Klik op de regel met "Sub VoegCodesToe()";
- Druk op F5.
Dan worden in kolom B (dus B1, B2, B3, etc.) de getallen geplaatst.
Hoe heb jij het met verticaal zoeken opgelost?
- Zet de woorden vanaf cel A1 onder elkaar, dus in A1, A2, A3, A4, etc.
- Druk op Alt-F11. Dan wordt het VBA-venster geopend;
- Kies Invoegen | Module;
- Plak de bovenstaande code in bericht van 15 september 22:26 in het grootste deel van dat venster;
- Klik op de regel met "Sub VoegCodesToe()";
- Druk op F5.
Dan worden in kolom B (dus B1, B2, B3, etc.) de getallen geplaatst.
Hoe heb jij het met verticaal zoeken opgelost?
World of Warcraft: Legion
maandag 19 september 2011 om 18:39
Ik heb naast mijn hoofdtabel een kleine tabel gemaakt, met daarin alle voorkomende waarden en hun code.
Toen heb ik in de hoofdtabel een kolom ingevoegd die verwijst naar die kleine tabel. (=zoekenv(H3;$AH$2:$AI$95;2;0). En dan lukt het ook.
Hans, ik heb ook jouw manier geprobeerd, met de nieuwe uitleg lukt het wel.
Toen heb ik in de hoofdtabel een kolom ingevoegd die verwijst naar die kleine tabel. (=zoekenv(H3;$AH$2:$AI$95;2;0). En dan lukt het ook.
Hans, ik heb ook jouw manier geprobeerd, met de nieuwe uitleg lukt het wel.
dinsdag 20 september 2011 om 17:22
Ja, zo kan het ook. Maar ik zou het ook als een functie kunnen schrijven, die een rij getallen teruggeeft.
Mijn macro zoekt alles zelf uit. De woorden staan van te voren niet vast. Het aantal verschillende woorden moet maximaal 20 zijn. Kolom A wordt doorzocht totdat een lege cel aangetroffen wordt; dan stopt de macro.
Mijn macro zoekt alles zelf uit. De woorden staan van te voren niet vast. Het aantal verschillende woorden moet maximaal 20 zijn. Kolom A wordt doorzocht totdat een lege cel aangetroffen wordt; dan stopt de macro.
World of Warcraft: Legion
donderdag 6 oktober 2011 om 06:17
Techniek,
- Klik op Bestand, dan Opslaan Als of Opslaan;
- In plaats van Opslaan, klik op Extra;
- Klik op Algemene opties...;
- Verzin een wachtwoord en typ dat in bij Wachtwoord voor openen;
- Klik op OK;
Er komt nog een dialoogvenster.
- Typ het wachtwoord nog een keer in;
- Klik op OK.
- Klik op Bestand, dan Opslaan Als of Opslaan;
- In plaats van Opslaan, klik op Extra;
- Klik op Algemene opties...;
- Verzin een wachtwoord en typ dat in bij Wachtwoord voor openen;
- Klik op OK;
Er komt nog een dialoogvenster.
- Typ het wachtwoord nog een keer in;
- Klik op OK.
World of Warcraft: Legion
vrijdag 7 oktober 2011 om 18:10
Ik zit erover na te denken om ook zoiets voor Access te doen, dus een Accessvraagbaak. Maar ik denk dat ik relatief meer verstand heb van Excel dan van Access, maar in dat laatste word ik wel steeds handiger. Op mijn werk werk ik daarmee, dus misschien kan ik ook op het gebied van Access iets voor jullie betekenen.
World of Warcraft: Legion
vrijdag 7 oktober 2011 om 19:25
Hoi hans!
Ik heb een vraag eigenlijk meer word gerelateerd (heb hem ook al op het nerdtopic gesteld).
quote:
Oke, ik heb nu een heel nadere code gebruikt... maar nu wil ik eigenlijk de formulier data gelijk als .txt (zodat ik het kan verwerken) opslaan, kan dit ook?
Hieronder mijn code, gekoppeld aan een knop:
Private Sub CommandButton1_Click()
ActiveDocument.Save
Dim olApp As Object
Dim olMsg As Object
Set olApp = CreateObject("Outlook.Application")
Set olMsg = olApp.CreateItem(0)
With olMsg
.To = "mailadres"
.Subject = "Test Evaluatie"
.Body = "Hierbij het Ingevulde Evaluatie formulier, Groet"
.Attachments.Add Me.Path + "\" + Me.Name
.Send
End With
Set olMsg = Nothing
Set olApp = Nothing
End Sub
Ik heb gezien dat je misschien .SaveFormData=True kan gebruiken maar hoe?
quote:
@neweve is het nog gelukt (val ff binnen hier)
Je kan gebruiken:
olMsg.SaveAs(me.path & "\naamvanmail.msg")
Wordt wel als een email opgeslagen en niet als tekstbestand.
Dan nog even over het createobject.
In VB.NET wordt iedere keer een nieuwe instantie geopend als je het gebruikt: Ikzelf controleer of outlook al geopend is. Ik weet niet of dat via VBA ook nodig is:
'Open instance
oApp = New Outlook.Application
CheckOutlook = True
On Error Resume Next
oApp = GetObject(, "Outlook.Application")
If Err.Number = 429 Then
oApp = New Outlook.Application
System.Diagnostics.Process.Start("OUTLOOK.EXE")
End If
On Error GoTo mailerror
CheckOutlook = True
Exit Function
mailerror:
CheckOutlook = False
je zegt dat het dan als email wordt opgeslagen ipv als text? Dit moet opzich te doen zijn want dat kan ik kopiëren naar een .txt bestandje. Maar hoe moet ik dit dan in mijn eigen code verwerken???
De code die ik had lijkt bij redelijk wat mensen niet te werken (of de meeste stuurden het gewoon terug...)
Even kort beschreven. Wat ik graag wil is:
Ik heb een word formulier gemaakt (en beveiligd), dit kunnen mensen invullen en naar mij terugsturen. Het liefste heb ik dat het voor hun makkelijk verzenden is, via een verzendknop (of iets dergelijks) en voor mij makkelijk verwerken.
Het verwerken doe ik in excel en om hier word formulieren te gebruiken/inladen moet je de form data opslaan in een .txt bestand.
Als verwerken van het formulier ook op een andere manier makkelijker kan hoor ik dat graag!
Ik heb een vraag eigenlijk meer word gerelateerd (heb hem ook al op het nerdtopic gesteld).
quote:
Oke, ik heb nu een heel nadere code gebruikt... maar nu wil ik eigenlijk de formulier data gelijk als .txt (zodat ik het kan verwerken) opslaan, kan dit ook?
Hieronder mijn code, gekoppeld aan een knop:
Private Sub CommandButton1_Click()
ActiveDocument.Save
Dim olApp As Object
Dim olMsg As Object
Set olApp = CreateObject("Outlook.Application")
Set olMsg = olApp.CreateItem(0)
With olMsg
.To = "mailadres"
.Subject = "Test Evaluatie"
.Body = "Hierbij het Ingevulde Evaluatie formulier, Groet"
.Attachments.Add Me.Path + "\" + Me.Name
.Send
End With
Set olMsg = Nothing
Set olApp = Nothing
End Sub
Ik heb gezien dat je misschien .SaveFormData=True kan gebruiken maar hoe?
quote:
@neweve is het nog gelukt (val ff binnen hier)
Je kan gebruiken:
olMsg.SaveAs(me.path & "\naamvanmail.msg")
Wordt wel als een email opgeslagen en niet als tekstbestand.
Dan nog even over het createobject.
In VB.NET wordt iedere keer een nieuwe instantie geopend als je het gebruikt: Ikzelf controleer of outlook al geopend is. Ik weet niet of dat via VBA ook nodig is:
'Open instance
oApp = New Outlook.Application
CheckOutlook = True
On Error Resume Next
oApp = GetObject(, "Outlook.Application")
If Err.Number = 429 Then
oApp = New Outlook.Application
System.Diagnostics.Process.Start("OUTLOOK.EXE")
End If
On Error GoTo mailerror
CheckOutlook = True
Exit Function
mailerror:
CheckOutlook = False
je zegt dat het dan als email wordt opgeslagen ipv als text? Dit moet opzich te doen zijn want dat kan ik kopiëren naar een .txt bestandje. Maar hoe moet ik dit dan in mijn eigen code verwerken???
De code die ik had lijkt bij redelijk wat mensen niet te werken (of de meeste stuurden het gewoon terug...)
Even kort beschreven. Wat ik graag wil is:
Ik heb een word formulier gemaakt (en beveiligd), dit kunnen mensen invullen en naar mij terugsturen. Het liefste heb ik dat het voor hun makkelijk verzenden is, via een verzendknop (of iets dergelijks) en voor mij makkelijk verwerken.
Het verwerken doe ik in excel en om hier word formulieren te gebruiken/inladen moet je de form data opslaan in een .txt bestand.
Als verwerken van het formulier ook op een andere manier makkelijker kan hoor ik dat graag!
Als je bang bent dat alles in de soep loopt, neem dan een pannetje mee.