|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Bannato
Iscritto dal: Jun 2005
Città: l'unica che per avere un santo patrono è andata a rubarlo altrove...
Messaggi: 10008
|
[VBA] UserForm/CommandButton in una macro
Non so se è la sezione giusta (forse Programmi?), però si tratta di una cosa che riguarda prettamente la programmazione piuttosto che Excel vero e proprio. Ad ogni modo vi espongo il problema.
Sono abbastanza niubbo di programmazione, ma per necessità sto preparando un lavoro in excel in cui si fa abbondante uso di macro elaborate ed ora mi ritrovo a combattere con gli UserForm e di preciso con i Command Button. Ho la necessità di far apparire ad una certa fase dell'esecuzione di una macro uno UserForm con 2 pulsanti, uno dei quali mi deve far proseguire l'esecuzione della macro da un certo punto (Lab100), mentre il secondo interrompe tutto. Ebbene il problema è far funzionare il primo pulsante di modo che la macro prosegua dal punto richiesto. Vi posto la parte incriminata della macro Quote:
Alla pressione del pulsante Si c'è il salto a Lab100 da cui procede regolarmente la macro. Spero di essere stato chiaro e che qualcuno mi possa dare una mano. Ultima modifica di diabolik1981 : 03-07-2009 alle 11:17. |
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
scusami forse no ho capito io...
ma che c'è di male in un banale SI NO? qualcosa tipo Codice:
Accoda = MsgBox("continuo?", vbYesNo, "TITOLO") If Accoda = vbNo Then End
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] Ultima modifica di zuper : 03-07-2009 alle 12:05. |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Jun 2005
Città: l'unica che per avere un santo patrono è andata a rubarlo altrove...
Messaggi: 10008
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
ma quello che ti ho postato ha i 2 pulsanti SI NO
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Jun 2005
Città: l'unica che per avere un santo patrono è andata a rubarlo altrove...
Messaggi: 10008
|
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
prova invece di goto end goto labfine
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Jun 2005
Città: l'unica che per avere un santo patrono è andata a rubarlo altrove...
Messaggi: 10008
|
quell'errore compare non appena finisco di scriver vbYesNo, evidenziando in rosso la riga del MsgBox
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
nn puoi postare il foglio?
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
![]() |
![]() |
![]() |
#9 | |
Bannato
Iscritto dal: Jun 2005
Città: l'unica che per avere un santo patrono è andata a rubarlo altrove...
Messaggi: 10008
|
è gigantesco, però posso postare l'intera macro
Quote:
|
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Codice:
Accoda = MsgBox(Prompt:="File movimenti Pieno, devi accodare altri movimenti?", Title:="Accoda Movimenti")
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
non posso chiaramente provarlo, ma così DOVREBBE andare
Codice:
Option Explicit ' La subroutine richiamata da input Box Carica il file dei bollettini da stampare ' Sub QuotaAcqua() Dim CausOperaz As String Dim AnaInterno() As String Dim AnaNomeCondomino() As String Dim AnaImportoEntrate() As Single Dim Indice As Integer Dim IndiceAnag As Integer Dim IndiceMovim As Integer Dim Accoda As String Dim NumeroCondomini As Integer Dim CausTrim As String Dim Periodo As String Sheets("Mov.Boll").Select If IsEmpty(Cells(2, 1)) Then GoTo Lab050 Accoda = MsgBox("continuo?", vbYesNo, "TITOLO") If Accoda = vbNo Then GoTo LabFine Lab050: CausTrim = InputBox(Prompt:="Indicare il trimestre di riferimento, 8 se è il conguaglio", _ Title:="Indicare il trimestre di riferimento, 8 se è il conguaglio") Sheets("Q.Acqua").Select If CausTrim <> "" Then GoTo Lab075 MsgBox "Non hai specificato alcuna causale" Sheets("Mov.Boll").Select GoTo LabFine Lab075: If CausTrim = 1 Then GoTo Lab100 If CausTrim = 2 Then GoTo Lab100 If CausTrim = 3 Then GoTo Lab100 If CausTrim = 4 Then GoTo Lab100 If CausTrim = 8 Then GoTo Lab100 MsgBox "Hai indicato un valore errato; sono consentiti i trimesti 1,2,3,4 o 8 per conguaglio" Sheets("Mov.Boll").Select GoTo Lab050 Lab100: ' Determino il numero dei condomini per il dimensionamento delle tabelle Periodo = Cells(6, CausTrim + 2) NumeroCondomini = 0 Do NumeroCondomini = NumeroCondomini + 1 Loop Until IsEmpty(Cells(NumeroCondomini + 6, 1)) NumeroCondomini = NumeroCondomini - 1 ReDim AnaInterno(1 To NumeroCondomini) As String ReDim AnaNomeCondomino(1 To NumeroCondomini) As String ReDim AnaImportoEntrate(1 To NumeroCondomini) As Single For Indice = 1 To NumeroCondomini Sheets("Q.Acqua").Select AnaInterno(Indice) = Cells(Indice + 6, 1) AnaNomeCondomino(Indice) = Cells(Indice + 6, 2) AnaImportoEntrate(Indice) = Cells(Indice + 6, CausTrim + 3) Next Lab200: IndiceAnag = Indice Sheets("Mov.Boll").Select Indice = 0 IndiceMovim = 0 Lab250: Do IndiceMovim = IndiceMovim + 1 Loop Until IsEmpty(Cells(IndiceMovim, 1)) IndiceMovim = IndiceMovim - 2 Lab300: CausOperaz = "Lettura acqua " + CausTrim + "° trimestre: " + Periodo If CausTrim = 8 Then CausOperaz = "Conguaglio acqua" Indice = Indice + 1 If Indice >= IndiceAnag Then GoTo LabFine Cells(1 + Indice + IndiceMovim, 1) = AnaInterno(Indice) Cells(1 + Indice + IndiceMovim, 4) = AnaNomeCondomino(Indice) Cells(1 + Indice + IndiceMovim, 6) = AnaImportoEntrate(Indice) Cells(1 + Indice + IndiceMovim, 8) = CausOperaz GoTo Lab300 LabFine: Cells.EntireColumn.AutoFit End Sub
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
![]() |
![]() |
![]() |
#12 |
Bannato
Iscritto dal: Jun 2005
Città: l'unica che per avere un santo patrono è andata a rubarlo altrove...
Messaggi: 10008
|
Grazie mille, ora funziona. Purtroppo non sono un programmatore, e pur amando molto l'informatica mi mancano le basi e la conoscenza del linguaggio e delle funzioni, ed ovviamente scrivere codice non è una cosa così semplice.
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
io sono partito ancora messo peggio... e sono solo un passettino avanti!!!! continua così e imparerai!!
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:03.