• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

variabele tekst in message box

Status
Niet open voor verdere reacties.

rocknroadie

Gebruiker
Lid geworden
5 sep 2016
Berichten
184
Ik zit met ene klein euvel.....

op het einde van een excel "programma" (laat het ons zo ff noemen", wil ik afsluiten met een messagebox met een spreuk in. Gewoon omdat het kan en omdat ik het leuk vind om de gebruikers nog een "wijsheidje" mee te geven....

de spreuken staan in een apart tabblad, op dat tabblad staat ook een teller die gaat bepalen welke spreuk er weergegeven moet worden.

dit is de code:


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim spreuk As String
Dim spreukteller As Integer
Dim spreuktellercontrole As Integer

spreuktellercontrole = Sheet2.Range("O1").Value
spreukteller = Sheet2.Range("N2").Value
spreuk = Sheet2.Cells(15, spreukteller).Value

If spreukteller = spreuktellercontrole Then

Sheet2.Range("N2").Value = 2

End If

If Sheet2.Range("I5").Value = 1 Then


MsgBox("spreuk", vbOKOnly, "SMOS V6.66")

Sheet2.Range("N2").Value = spreukteller + 1

End If


probleem 1 is bij het compileren dat ik een foutmelding krijg en er naar een "=" gevraagd wordt na de lijn "msg box ...."
probleem 2 is dat de variabele spreuk leeg blijft......


kan er iemand mij helpen en me zeggen wat ik verkeerd doe en mij aub ene oplossing aanreiken?

alvast bedankt

Marc
 
zo misschien?
Code:
Private Sub Sjon()

 Dim spreuk As String
 Dim spreukteller As Integer
 Dim spreuktellercontrole As Integer

 spreuktellercontrole = Blad1.Range("O1").Value
 spreukteller = Blad1.Range("N2").Value


 If spreukteller = spreuktellercontrole Then

 Blad1.Range("N2").Value = 2

 End If

 If Blad1.Range("I5").Value = 1 Then
 spreuk = Blad1.Cells(15, spreukteller).Value

 MsgBox spreuk

 Blad1.Range("N2").Value = spreukteller + 1

 End If
 End Sub

Al is het op deze manier altijd dezelfde spreuk
 
Laatst bewerkt:
zo misschien?
Code:
Private Sub Sjon()

 Dim spreuk As String
 Dim spreukteller As Integer
 Dim spreuktellercontrole As Integer

 spreuktellercontrole = Blad1.Range("O1").Value
 spreukteller = Blad1.Range("N2").Value


 If spreukteller = spreuktellercontrole Then

 Blad1.Range("N2").Value = 2

 End If

 If Blad1.Range("I5").Value = 1 Then
 spreuk = Blad1.Cells(15, spreukteller).Value

 MsgBox spreuk

 Blad1.Range("N2").Value = spreukteller + 1

 End If
 End Sub

Al is het op deze manier altijd dezelfde spreuk

dank voor de input maar de variabele spreuk blijft nog altijd leeg. nochtans is cel O15 wel ingevuld.....

de spreuk veanderd op deze manier hopelijk wel omdat ik op het einde, na de spreuk, de waarde van de cel die in de spreukteller wordt gestoken met 1 ga verhogen.
 
In jou code zet je de spreukteller altijd op 2, dus zal hij altijd in B15 zoeken.
 
In jou code zet je de spreukteller altijd op 2, dus zal hij altijd in B15 zoeken.

hoe kom je daar bij? ik ontken het niet he maar ik snap het niet.

op mijn excelblad staan 2 tellers. een teller voor het aantal spreuken dat in de lijst staan (die ga ik in de spreuktellercontrole steken) en een teller (spreukteller) die gaat bijhouden hoevel spreuken er al weergegeven zijn. als beide tellers gelijk zijn gaat de spreukteller terug op 2 gezet worden zodat bij de volgende keer opnieuw de eerste spreuk (die op de 2de rij staat in het blad) gebruikt wordt


althans dat is de bedoeling.......
 
Volgens jouw code heb je de spreuken in de kolommen staan van rij 15.
Dus rij 2 zal nooit aan beurt komen.

cells(15,spreukenteller)
Cells(rij,kolom)
 
Dan zou dit het moeten doen:

Code:
Private Sub Sjon()

 Dim spreuk As String
 Dim spreukteller As Integer
 Dim spreuktellercontrole As Integer

 spreuktellercontrole = sheet2.Range("O1").Value
 spreukteller = sheet2.Range("N2").Value


 If spreukteller = spreuktellercontrole Then

 sheet2.Range("N2").Value = 2

 End If

 If sheet2.Range("I5").Value = 1 Then
 spreuk = sheet2.Cells(15, spreukteller).Value

 MsgBox spreuk


 sheet2.Range("N2").Value = spreukteller + 1
 End If
 End Sub
 
Laatst bewerkt:
@SjonR,

Lezen is een kunst.
 
Tja, nu zie ik het staan. Ik nam zijn Cells(15,.... nog als plaats voor de spreuken. Daarom is een voorbeeldbestandje wel handig
 
Lijkt mij dat de gehele code wel anders kan, maar dit terzijde.
Ik bouw geen bestand na.
 
Lijkt mij dat de gehele code wel anders kan, maar dit terzijde.
Ik bouw geen bestand na.

Ik ben er zelf wel heel zeker van dat de code anders kan én ik begrijp dat een voorbeeldbestand handig is .... ik ben echt n groentje op heet vlak vaan programmeren (als we dit zo kunnen noemen)

alleen, mijn gans excel bestand is nogal groot.... én het bevat gegevens die ik niet publiekelijk op het net wil zetten. een voorbeeld bestandje aanmaken is nogal omslachtig op dit moment......


Maar als jullie tips hebben zijn deze altijd welkom!

of kan ik een excelbestand ook prive naar iemand doorsturen die er eens naar wil kijken en mij dan waarschijnlijk heel hard rond mijn oren gaat slagen.....
 
Vooruit maar....

Dit is eenvoudiger.
 

Bijlagen

  • spreuken.xlsb
    14,3 KB · Weergaven: 50
Vooruit maar....

Dit is eenvoudiger.

mijn dank is groot! voor mijn beeld, in jouw voorbeeld is het aantal spreuken vastgelegd in de code, juist? dat wil zeggen dat als ik spreuken toevoeg, ik het cijfer in de code moet aanpassen, correct?
 
Ook dat kan anders.

Zonder de code steeds aan te passen.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("C1").Value = IIf(Range("c1").Value >= Application.CountA(Columns(1)), 1, Range("c1").Value + 1)
  MsgBox Cells(Range("C1").Value, 1)
  ThisWorkbook.Save
End Sub
 
Laatst bewerkt:
Ook dat kan anders.

Zonder de code steeds aan te passen.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("C1").Value = IIf(Range("c1").Value >= Application.CountA(Columns(1)), 1, Range("c1").Value + 1)
  MsgBox Cells(Range("C1").Value, 1)
  ThisWorkbook.Save
End Sub

ik ben bijna helemaal mee!! thx a lot!!! ga straks of morgen ff proberen uit te pluizen hoe dit juist allemaal werkt en in elkaar zit (ik wil de code die ik gebruik ook begrijpen ) voor al de IIF is onbekend voor mij maar ik zoek het wel uit. als ik er niet uit geraak dan horen jullie me terug!


thx voor alle tips en hulp, nog een fijne avond!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan