VBA: meesturen bijlage afhankelijk van waarde cel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 04-10 16:43
Hi,

ik heb onderstaande VBA code, en daarmee worden meerdere bijlagen meegestuurd. Nu wil ik alleen dmv een selectbox kunnen kiezen welke bijlage wordt meegestuurd. De selectbox geeft in K4 TRUE of FALSE aan en in K5 ook als het de andere keuze betreft.

code:
1
-knip-


Ik kom er niet uit hoe ik dit het beste kan doen. Iemand met het zetje in de juiste richting ?

[ Voor 87% gewijzigd door M.v.Veelen op 14-06-2019 15:19 ]

¯\_(ツ)_/¯


Acties:
  • +2 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Ik heb niet iedere regel bekeken
offtopic:
het zou helpen als je je code beperkt tot de relevante delen. Ook voor je eigen debugging.
Ook: je code zou beter leesbaar zijn als je de IF.. End If blokken netjes had uitgelijnd. Nu wordt optisch gesuggereerd dat ze buiten de With Outmail vallen.
Edit: doe jezelf in dat kader ook een lol en gebruik liever geen Range() zonder te duiden Range waarvan. De actieve sheet, bijvoorbeeld.


Dat laatste zou volgens mij moeten werken. Althans als er inderdaad de tekst "TRUE" staat. Het is waarschijnlijker dat het een waar / onwaar bevat. Dan dus vooral niet de tekst van de cel bekijken, maar de waarde. Waarom werkt dat laatste niet / welke meldingen krijg je?

[ Voor 10% gewijzigd door F_J_K op 04-12-2018 11:32 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 04-10 16:43
@F_J_K Dank voor de tips, je hebt gelijk, het is zo wat slordig en lastig te lezen. Ik heb de laatste optie nog eens geprobeerd en bij het verzenden komt een pop-up met de melding:

Compile error in hidden module: FuctionsModule. This error commonly occurs when code is incompatible with the version, platform, or architecture of this application.Click 'Help' for information on how to correct this error.


Ik heb inderdaad in die 2 cellen TRUE of FALSE staan. Deze 2 cellen heb ik ook unlocked (waren locked omdat ik niet wil dat men in verkeerde cellen gaat ppielen) en de kolom heb ik op Hidden gezet.

Hoe vind ik uit wat precies de foutmelding is?

Dit is wat ik nu heb:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    With OutMail
        If Signature = True Then .Display
        .To = StrTo
        .CC = StrCC
        .BCC = StrBCC
        .Subject = StrSubject
        .HTMLBody = StrBody & "<br /><br /><br />" & Signature
        .Attachments.Add FileNamePDF
        
If Range("K4").Text = "TRUE" Then
        
        .Attachments.Add BijlageA
        
Else If Range("K5").Text = "TRUE" Then
        
        .Attachments.Add BijlageB
        
End If
                
        .Attachments.Add BijlageC
If Send = True Then
            .Send

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Je reageert wat vaag: is de tekst "TRUE" of is de value TRUE? Groot verschil met verschillende uitkomsten. Doe die If even los van de rest. if .... text = "TRUE" then msgbox "klopt" ... Dus in een losse eigen sub / functie. Best kans dat je wilt checken of de waarde van de cel waar is. Voorbeeld van het verschil:
If Range("A1").text = "TRUE" Then debug.Print "klopt"
If Range("A1").value = TRUE Then debug.Print "klopt"
klopt
Je kunt het overigens ook mooier buiten de With... doen. Tenminste, als altijd een vd twee actief is en nooit geen van beide: bepaal vooraf al of bijlage A of B nodig is en definieer alleen bijlage1 = {A.pdf of B.pdf} en bijlage2 = altijd.pdf en voeg altijd 1 en 2 toe.

[ Voor 15% gewijzigd door F_J_K op 04-12-2018 13:57 . Reden: de Dus... voor de quote ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 04-10 16:43
Euh, ja....ehm…..dat laatste vooral. Ik zou ipv checkboxen dan buttons kunnen doen: default is A actief en als B wordt geselecteerd, dan wordt het B.

Zoals hier beschreven: https://www.excel-easy.com/vba/examples/option-buttons.html ga ik dus morgen met radiobuttons proberen dit voor elkaar te krijgen.

Hoe zou ik het in dat geval het beste kunnen doen? Ik wil het graag zo netjes / handig mogelijk.

Kun je een simpel opzetje maken die ik kan gebruiken?

Waar ik nu namelijk ook tegenaan loop: de 2 velden waar ik de waarde/tekst TRUE of FALSE heb staan, bevindt zich in een hidden gedeelte en als ik die 2 cellen lock, dan krijg ik daarover een foutmelding. Ik zorg er dan voor dat die 2 cellen niet gelockt zijn, maar kan daar dan nog steeds niet mee verder omdat ik dan weer een andere foutmelding krijg. Een melding die me niet aangeeft wat nu precies de fout is.

[ Voor 79% gewijzigd door M.v.Veelen op 04-12-2018 19:04 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 04-10 16:43
Als iemand nog een opzetje weet? Ik heb de checkboxen vervangen door radio buttons (daarbij is het dan ook weer de vraag welke van de 2 ik beter zou kunnen nemen….). Ik zou in de voorbeeld-code graag de schifting willen maken dat als radio button A is geselecteerd, dat alleen bijlageA wordt meegestuurd, en als B is geselecteerd, alleen bijlageB wordt meegestuurd.

Ik zit te prutsen en krijg toch telkens maar foutmeldingen: Invalid procedure call or argument

En ik zie niet waar het mis gaat, want hij verwijst me dan naar het genereren van de bestandsnaam (dit formulier converteert het Excelbestand naar een PDF en slaat die op met een naam die aangemaakt wordt adhv diverse variabelen zoals bijv. de tijd). Dat stuk code is ongewijzigd en staat niet in relatie tot de bijlagen.

¯\_(ツ)_/¯


Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

offtopic:
Ajb niet je topic binnen 24 uur kicken, laat staan tweemaal als ik je niet subtiele 'kik' door mij achteraf te mentionen meetel ;)


Bekijk het stap voor stap, ga geen nieuwe wijzigingen doorvoeren als je niet weet waar het waarom fout gaat. Dan raak je alleen maar verder van huis. Sowieso maakt het niet zoveel uit of het nu een radiobox of checkbox is in dit stadium.

Als ik het goed begrijp,
code:
1
2
3
4
5
6
7
8
9
If Range("K4").Text = "TRUE" Then
        
        .Attachments.Add BijlageA
        
Else If Range("K5").Text = "TRUE" Then
        
        .Attachments.Add BijlageB
        
End If

Als dat níet werkt en het wel werkt wel goed met simpelweg .Attachments.Add BijlageA en .Attachments.Add BijlageB, dan zal het toch wel fout gaan in die If then else? Je lijkt nu steeds mijn opmerking te negeren.

Nogmaals: een cel met tekst TRUE heeft niet de waarde TRUE. Een cel met waarde TRUE kan wel visueel de tekst TRUE laten zien. Doe me een lol en zet nu eens alleen die in een test-functie of voeg debugging-info toe (zoals een debug.print of msgbox). Dan weet ik tenminste dat het daar niet aan ligt.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 04-10 16:43
Ik ga maandag verder met jouw tips. Kan er dan pas mee verder. Ik neem je tips zeer zeker ter harte ;-)

Edit:
Helaas kan ik er nu pas mee verder....

Het eerste waar ik tegenaan liep, was dat de 2 velden waar de TRUE / FALSE in veranderen, zich in een beveiligd deel van het document bevonden. Dat heb ik aangepast, maar is volgens mij toch telkens nog een probleem waar ik niet uit kom.

Vervolgens is het zo dat wanneer ik een if/then/else toevoeg, dat dan genoemde problemen optreden. Ik heb geen idee hoe / waar een print.debug toe te voegen, zodat ik ook niet weet wat er precies mis gaat. Ik ben teveel n00b om dit tot een goed resultaat te brengen.

(no kick intended) Edit:

Ook bleek bij het testen dat ineens werkende versies niet meer werkten en na een herstart was dat weer opgelost. Zo heb ik wss heel wat zitten knutselen terwijl het misschien ergens wel zou hebben kunnen werken, maar zat er op de machine zelf iets dwars. Ik ga gewoon verder knutselen. Wie weet zie ik ergens het licht.

[ Voor 95% gewijzigd door M.v.Veelen op 13-12-2018 15:18 ]

¯\_(ツ)_/¯


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 04-10 16:43
@F_J_K

Omdat dit nogal een andere draai geeft aan het verhaal, heb ik mijn vorige bericht niet bewerkt, maar bewust een reactie eronder geplaatst….. Met deze oplossing is het me bijna gelukt:

code:
1
-knip


Dit werkt prima MITS het formulier niet wordt beveiligd. Als het formulier wordt beveiligd, dan worden de 2 bijlagen helemaal niet meegestuurd.

Ik heb alle cellen, behalve bepaalde cellen gelocked. De cel waaraan de radio buttons zijn gekoppeld (i5) heb ik NIET gelocked. Ik verberg die alleen.
Met tab kan ik dan alleen de niet-gelockte cellen doorwandelen. Vreemde is dat de cel waar de radio buttons aan zijn gekoppeld (i5) dan niet geselecteerd kan worden. Ik vermoed dat dit nog het laatste probleem is die ik moet oplossen.

Wat trouwens de reden bleek te zijn van die vage foutmeldingen, is dat ik voor het IMEI nummer een check heb van 15 karakters en daar telkens een reeks 3-en ofzo invoerde. Op de 1 of andere manier pikt ie dat niet. Toen ik een willekeurige reeks probeerde, werkte het allemaal wel. Vreemd, maar daarmee dus wel een hoop tijd verloren en een hoop frustratie opgebouwd.

Nog 1 klein puntje zien op te lossen dus.

Edit: de kolom waarin de cel zich bevindt die gekoppeld is aan de radio buttons heb ik heel smal gemaakt. ALs ik 'm '0' breed maak, is dat hetzelfde als hide en dan werkt het niet meer. Vervolgens heb ik de tekst in de cel wit gemaakt, zodat je de inhoud niet ziet.

Bij normaal gebruik werkt dit en kan ik hier wel wat mee.

[ Voor 24% gewijzigd door M.v.Veelen op 14-06-2019 15:19 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • stuch
  • Registratie: September 2011
  • Laatst online: 29-11-2020
Hi TP,

Wellicht overbodig, maar ik zie dat je in de laatste post meldt dat de radiobuttons indien zij gehide/gelocked zijn niet kunnen worden getarget. Echter, in de door jou aangegeven link staat het volgende m.b.t. de waardes die de buttons vertegenwoordigen. M.a.w. je moet dus niet de waarde uit de call ophalen, maar de waarde die de button op dat moment heeft (true/false).

code:
1
2
3
If OptionButton1.Value = True Then 
   Iets = X
end if


Groeten,

- just do it

Pagina: 1