Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Errore di run-time "13" tipo non corrispondente

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Errore di run-time "13" tipo non corrispondente

Postdi il_puttologo » 06/03/17 18:07

Ciao a tutti ho un problema nella costruzione di una macro in vba che mi sta facendo diventare matto!
Sto creando una semplice interfaccia per la registrazione delle modifiche stampi della mia ditta. In poche parole sto utilizzando due fogli di lavoro, nel primo premendo un pulsante di comando mi si apre una userform dove devo inserire data-commessa-ditta-descrizione-datadiriconsegna, quindi i dati inseriti si salvano nel Foglio1 in ordine di inserimento. Questi dati però voglio che vengano copiati anche nel Foglio2 e che si dispongano in automatico in ordine dalla data di riconsegna più prossima a quella più remota, in altre parole voglio che aprendo il Foglio2 mi esca l'elenco delle modifiche che devo fare dalla più urgente alla meno urgente!
Ora il codice per salvarli nel Foglio1 funziona benissimo ma nel Foglio2 non solo non si mettono in ordine le date, ma addirittura non mi si salvano neppure i dati!
Ultima cosa le prime due righe di entrambi i fogli sono bloccate per rendere sempre visibili le intestazioni delle colonne data-commessa-ditta-descrizione-datadiriconsegna.
Ripeto ci stò diventando matto!! :eeh:
Grazie mille in anticipo!



Codice: Seleziona tutto
Private Sub CommandButton1_Click()
If TextBox1 = "" Then
MsgBox "inserire data"
TextBox1.SetFocus
Exit Sub
End If
If TextBox2 = "" Then
MsgBox "inserire commessa"
TextBox2.SetFocus
Exit Sub
End If
If TextBox3 = "" Then
MsgBox "inserire nome ditta"
TextBox3.SetFocus
Exit Sub
End If
If TextBox4 = "" Then
MsgBox "inserire tipo di modifica da eseguire"
TextBox4.SetFocus
Exit Sub
End If
If TextBox5 = "" Then
MsgBox "inserire data riconsegna"
TextBox5.SetFocus
Exit Sub
End If

Sheets("Foglio1").Select
riga = 2
While Cells(riga, 1) <> ""
riga = riga + 1
Wend
Cells(riga, 1) = TextBox1.Text
Cells(riga, 2) = TextBox2.Text
Cells(riga, 3) = TextBox3.Text
Cells(riga, 4) = TextBox4.Text
Cells(riga, 5) = TextBox5.Text
Cells(riga, 1) = CDate(TextBox1)
Cells(riga, 5) = CDate(TextBox5)

Sheets("Foglio2").Select
y = 2
While Cells(y, 1) <> ""
y = y + 1
Wend
Dim ladata As Date, x As Long
Dim paragone
paragone = Format(txt_Data, "dd/mm/yyyy")
x = 2
ladata = CDate(TextBox5)
paragone = Cells(x, 5)
While ladata >= CDate(paragone)                                                                                'IL DEBUG COMPARE QUI
x = x + 1
If x = ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row + 1 Then GoTo InserisciRiga
Wend

InserisciRiga:
Range("A" & x & ":E" & x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(x, 1) = TextBox1
Cells(x, 2) = TextBox2.Text
Cells(x, 3) = TextBox3.Text
Cells(x, 4) = TextBox4.Text
Cells(x, 5) = TextBox5
End Sub
il_puttologo
Utente Junior
 
Post: 22
Iscritto il: 06/03/17 17:44

Sponsor
 

Postdi ricky53 » 07/03/17 12:43

Ciao,
prima di tutto benvenuto nel nostro forum.

Scorrendo il codice:
a) ci sono diverse cosette da sistemare,
b) la variabile "y" dove viene utilizzata,
c) NON mi convince l'istruzione
Codice: Seleziona tutto
While ladata >= CDate(paragone)


Quando cambiano i valori di "ladata" e "paragone" altrimenti basta un "If" e ...

Però pensare di farci capire il problema solo leggendo il codice insieme alle tue spiegazioni ... a me sembra una cattiveria che vuoi farci ... Eh, Eh !!!

Facezie a parte ... è necessario avere un tuo file di esempio, allegalo ma SENZA dati riservati.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4526
Iscritto il: 11/04/09 19:29
Località: Italia

Postdi ricky53 » 07/03/17 13:02

Ciao,
il tuo quesito riguardando excel andava inserito nella sezione di Office.
Avresti avuto maggiore visibilità essendo frequentato da utenti specifici.

Ho chiesto ad un Moderatore di spostare il tuo quesito nella sezione giusta.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4526
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Errore di run-time "13" tipo non corrispondente

Postdi il_puttologo » 13/03/17 18:01

Mi scuso se non ho scritto nella sezione più adatta ma sono nuovo del forum :D
Ad ogni modo questo è il file xcel...spero sia comprensibile! :)
https://1drv.ms/x/s!AnhhBhgpktuUaVTpGK08nxiORF4
il_puttologo
Utente Junior
 
Post: 22
Iscritto il: 06/03/17 17:44

Re: Errore di run-time "13" tipo non corrispondente

Postdi Anthony47 » 14/03/17 02:31

Secondo me tu usi XL2013 o 2016, nel qual caso il codice della macro ha creato abbastanza confusione tra contenuto di Foglio1 e contenuto di Foglio2.
Ho modificato il codice della Sub CommandButton1_Click, come segue:
Codice: Seleziona tutto
Private Sub CommandButton1_Click()
If TextBox1 = "" Then
    MsgBox "inserire data"
    TextBox1.SetFocus
    Exit Sub
End If
If TextBox2 = "" Then
    MsgBox "inserire commessa"
    TextBox2.SetFocus
    Exit Sub
End If
If TextBox3 = "" Then
    MsgBox "inserire nome ditta"
    TextBox3.SetFocus
    Exit Sub
End If
If TextBox4 = "" Then
    MsgBox "inserire tipo di modifica da eseguire"
    TextBox4.SetFocus
    Exit Sub
End If
If TextBox5 = "" Then
    MsgBox "inserire data riconsegna"
    TextBox5.SetFocus
    Exit Sub
End If

'Sheets("Foglio1").Select
'riga = 2
'While Cells(riga, 1) <> ""
'riga = riga + 1
'Wend


With Sheets("Foglio1")
    riga = .Cells(Rows.Count, 1).End(xlUp).Row + 1
'    .Cells(riga, 1) = TextBox1.Text
    .Cells(riga, 2) = TextBox2.Text
    .Cells(riga, 3) = TextBox3.Text
    .Cells(riga, 4) = TextBox4.Text
'    .Cells(riga, 5) = TextBox5.Text
    .Cells(riga, 1) = CDate(TextBox1)
    .Cells(riga, 5) = CDate(TextBox5)
End With

'Sheets("Foglio2").Select
'y = 2
'While Cells(y, 1) <> ""
'y = y + 1
'Wend
'Sheets("Foglio2").Select
Dim ladata As Date, x As Long
ladata = CDate(TextBox5)
With Sheets("Foglio2")
    x = 2
'    While ladata >= CDate(.Cells(x, 5))
    Do
    x = x + 1
    If .Cells(x, 5) = "" Or ladata < CDate(.Cells(x, 5)) Then Exit Do
'    If x = ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row + 1 Then GoTo InserisciRiga
    Loop    'Wend

InserisciRiga:
    .Range("A" & x & ":E" & x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    .Cells(x, 1) = TextBox1
    .Cells(x, 2) = TextBox2.Text
    .Cells(x, 3) = TextBox3.Text
    .Cells(x, 4) = TextBox4.Text
    .Cells(x, 5) = TextBox5
End With
End Sub
Sostituisci questo codice all'attuale e prova.
Tutte le righe che cominciano con "apostrofo" sono disabilitate e possono essere cancellate (le ho lasciate per far meglio notare le aree di intervento).

Fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 17003
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di run-time "13" tipo non corrispondente

Postdi il_puttologo » 14/03/17 12:01

Ho provato a sostituire le tue righe alle mie, ma il bug continua a presentarsi sempre alla stessa riga

Codice: Seleziona tutto
Private Sub CommandButton1_Click()
If TextBox1 = "" Then
    MsgBox "inserire data"
    TextBox1.SetFocus
    Exit Sub
End If
If TextBox2 = "" Then
    MsgBox "inserire commessa"
    TextBox2.SetFocus
    Exit Sub
End If
If TextBox3 = "" Then
    MsgBox "inserire nome ditta"
    TextBox3.SetFocus
    Exit Sub
End If
If TextBox4 = "" Then
    MsgBox "inserire tipo di modifica da eseguire"
    TextBox4.SetFocus
    Exit Sub
End If
If TextBox5 = "" Then
    MsgBox "inserire data riconsegna"
    TextBox5.SetFocus
    Exit Sub
End If

Sheets("Foglio1").Select
riga = 2
While Cells(riga, 1) <> ""
riga = riga + 1
Wend


With Sheets("Foglio1")
    riga = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    .Cells(riga, 1) = TextBox1.Text
    .Cells(riga, 2) = TextBox2.Text
    .Cells(riga, 3) = TextBox3.Text
    .Cells(riga, 4) = TextBox4.Text
    .Cells(riga, 5) = TextBox5.Text
    .Cells(riga, 1) = CDate(TextBox1)
    .Cells(riga, 5) = CDate(TextBox5)
End With

Sheets("Foglio2").Select
y = 2
While Cells(y, 1) <> ""
y = y + 1
Wend
Sheets("Foglio2").Select
Dim ladata As Date, x As Long
ladata = CDate(TextBox5)
With Sheets("Foglio2")
    x = 2
'BUG TIPO NON CORRISPONDENTE    While ladata >= CDate(Cells(x, 5))
    Do
    x = x + 1
    If .Cells(x, 5) = "" Or ladata < CDate(.Cells(x, 5)) Then Exit Do
    If x = ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row + 1 Then GoTo InserisciRiga
    Loop
    Wend
   
InserisciRiga:
    .Range("A" & x & ":E" & x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    .Cells(x, 1) = TextBox1
    .Cells(x, 2) = TextBox2.Text
    .Cells(x, 3) = TextBox3.Text
    .Cells(x, 4) = TextBox4.Text
    .Cells(x, 5) = TextBox5
End With
End Sub
il_puttologo
Utente Junior
 
Post: 22
Iscritto il: 06/03/17 17:44

Re: Errore di run-time "13" tipo non corrispondente

Postdi Anthony47 » 14/03/17 12:09

Perdona, ma non capisco quale riga segnali l'errore.
Avatar utente
Anthony47
Moderatore
 
Post: 17003
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di run-time "13" tipo non corrispondente

Postdi il_puttologo » 15/03/17 17:18

Nel secondo while del Foglio2
Codice: Seleziona tutto
'BUG TIPO NON CORRISPONDENTE    While ladata >= CDate(Cells(x, 5))
    Do
    x = x + 1
    If .Cells(x, 5) = "" Or ladata < CDate(.Cells(x, 5)) Then Exit Do
    If x = ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row + 1 Then GoTo InserisciRiga
    Loop
    Wend
   
InserisciRiga:
    .Range("A" & x & ":E" & x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    .Cells(x, 1) = TextBox1
    .Cells(x, 2) = TextBox2.Text
    .Cells(x, 3) = TextBox3.Text
    .Cells(x, 4) = TextBox4.Text
    .Cells(x, 5) = TextBox5
End With
End Sub
il_puttologo
Utente Junior
 
Post: 22
Iscritto il: 06/03/17 17:44

Re: Errore di run-time "13" tipo non corrispondente

Postdi Anthony47 » 15/03/17 18:03

Se dici che Excel ti segnala un errore sulla riga
'BUG TIPO NON CORRISPONDENTE While ladata >= CDate(Cells(x, 5))
allora devo chiederti che Excel usi; perche' quella riga nel mio codice e' "commentata", cioe' come se non esistesse.

Mi confermi che hai copiato il mio codice e lo hai incollato nel tuo vba, al posto della tua precedente Sub CommandButton1_Click (cioe' che non l'hai riscritto da tasiera)?
Mi confermi che in qualche momento (quale momento?) la riga che ho indicato sopra ti appare colorata (in che colore?) Puoi allegare uno screenshot al momento dell'errore, da cui si veda sia il messaggio di errore che il codice sottostante? Per le istruzioni su come allegare una immagine:
viewtopic.php?f=26&t=103893&p=605488#p605488

E comunque, visto che ho ipotizzato che il tuo problema dipenda da una specifica versione di Excel, mi dici quale versione usi?
Avatar utente
Anthony47
Moderatore
 
Post: 17003
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di run-time "13" tipo non corrispondente

Postdi Anthony47 » 15/03/17 18:09

Mi rispondo da solo:
il codice che tu listi ha poco in comune con quanto ti avevo suggerito qui: viewtopic.php?f=26&t=108274#p635433
Quindi devi decidere se vuoi seguire i consigli oppure no.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17003
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di run-time "13" tipo non corrispondente

Postdi il_puttologo » 16/03/17 09:32

Scusa ma non ho molta dimestichezza ancora con excel. Comunque le righe le ho sostituite con le tue e non scritte da tastiera, ho solo tolto come avevi detto tu " ' " che avevi messo per evidenziarmi le modifiche che avevi fatto. Io uso excel 2007 e questa è l'immagine di cosa mii compare al momento dell'errore.

https://postimg.org/image/4zxyfo4lv/

grazie ancora dell'attenzione che stai prestando al mio problema ;)
il_puttologo
Utente Junior
 
Post: 22
Iscritto il: 06/03/17 17:44

Re: Errore di run-time "13" tipo non corrispondente

Postdi Anthony47 » 17/03/17 02:32

Ah ha, ho capito!
Pero' io avevo detto
"Tutte le righe che cominciano con "apostrofo" sono disabilitate e possono essere cancellate (le ho lasciate per far meglio notare le aree di intervento)"; quindi TUTTE LE RIGHE che cominciano con Apostrofo (lasciate nel codice solo per far notare quali erano le differenze tra prima e dopo) possono essere cancellate, non che si potevano cancellare gli Apostrofi.

Fai cosi': usa tutto il mio codice, apostrofi compresi, e non cambiare niente.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17003
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Errore di run-time "13" tipo non corrispondente

Postdi il_puttologo » 17/03/17 09:58

Ops! :lol: L'avevo detto io che non ero esperto! :lol: :lol:
Problema risolto grazie mille!!
il_puttologo
Utente Junior
 
Post: 22
Iscritto il: 06/03/17 17:44


Torna a Applicazioni Office Windows


Topic correlati a "Errore di run-time "13" tipo non corrispondente":


Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti