Cuestión : tipo vba de la discusión del byref del error de la unión mal hecha

no sure cómo resolver este error.
I tener una función en un módulo estándar, eso consigue los valores y llama el método apropiado de la clase para hacer alguno que procesa y entonces volver un value.

the que CWValuein variable es respuesta del highlighted
a aprisa sería mucho appreciated.

regards por adelantado
class= > " claro " del
> del " codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634:
635:
636:
637:
638:
639:
640:
641:
642:
643:
644:
645:
646:
647:
648:
649:
650:
651:
652:
653:
654:
655:
656:
657:
658:
659:
660:
661:
662:
663:
664:
665:
666:
667:
668:
669:
670:
671:
672:
673:
674:
675:
676:
677:
678:
679:
680:
681:
682:
683:
684:
685:
686:
687:
688:
689:
690:
691:
692:
693:
694:
695:
696:
697:
698:
699:
700:
701:
702:
703:
704:
705:
706:
707:
708:
709:
710:
711:
712:
713:
714:
715:
716:
717:
718:
719:
720:
721:
722:
723:
724:
725:
726:
727:
728:
729:
730:
731:
732:
733:
734:
735:
736:
737:
738:
739:
740:
741:
742:
743:
744:
745:
746:
747:
748:
749:
750:
751:
752:
753:
754:
755:
756:
757:
758:
759:
760:
761:
762:
763:
764:
765:
766:
767:
768:
769:
770:
771:
772:
función >Public notpretty CreateTestClass (de ClientValueIn variante tan, CWValueIn " del class= " del id= " codeSnippet805276 del
 0 entonces
contador = + 1000 contrario







Terminar si

Si InStr (StrCWEngineIn, StrClientEngineIn) > 0 entonces
contador = + 1000 contrario


Terminar si

'***************************************************************************

'comprobar a familia
'' cw instring delantero al cliente
Si FamilyInstr (StrCWEngineIn, StrClientEngineIn) = "" entonces




contador = + 100 contrarios
Terminar si




'***************************************************************************
'comprobar los errores tipográficos

StrTypo = DecodeEngine (StrCWEngineIn, StrClientEngineIn)
Si StrTypo = “error tipográfico” entonces

    contador = + 10 contrarios


'no hacer nada
Terminar si


'****************************************************************************
'conseguir la cuenta de la graduación del carácter

intcount = CharacterRank (StrCWEngineIn, StrClientEngineIn)

contador = contrario + intcount

'***************************************************************************

'' ***************************************************************************
'' Prueba técnica bhp
'Si CurrentProject.AllForms (“cañería”) .IsLoaded entonces
'
¡'BHPIn = [formas]! ¡[Cañería]! [CALC BHP]
'
'
'
'
'
'Terminar si

el 'final de compara
Terminar si


Terminar si


GetEngineRank = contrario * 100

Función del final
Función pública CharacterRank (StrEng1 como secuencia, strEng2 como secuencia) como de largo
Interruptor dévil como cronómetro

lIndex dévil como de largo
lLoopPosition dévil como de largo
lCharacterPosition dévil como de largo
iCounter dévil como de largo
StrWantedCharacter dévil como secuencia
StrTemp dévil como secuencia
'Fijar interruptor = nuevo cronómetro
'sw.StartTimer


'relacionarse con la secuencia más corta como lazos de controles de esta longitud y dirección del instr
Si Len (strEng2) < Len (StrEng1) entonces
    'intercambiarlos
    strEng2 = strEng2 + StrEng1
    StrEng1 = ido (strEng2, Len (strEng2) - Len (StrEng1))
    strEng2 = derecho (strEng2, Len (strEng2) - Len (StrEng1))

Terminar si

'conseguir el más corto len
lIndex = Len (StrEng1)
el 'strtemp llega a ser igual a la secuencia más larga pues éste es el que queremos acortarnos para cada lazo
StrTemp = strEng2

'lazo alrededor de la secuencia
            Para el lLoopPosition = 1 al lIndex
               'conseguir el carácter individual que comienza al principio de la secuencia
               StrWantedCharacter = mediados de (StrEng1, lLoopPosition, 1)
               'conseguir la posición de nuestro carácter de la secuencia más larga
               lCharacterPosition = InStr (strEng2, StrWantedCharacter)
               el 'carácter encontró en la secuencia más larga
               Si <> 0 de InStr (StrTemp, StrWantedCharacter) entonces
                    'quitar el carácter de la secuencia del temp
                    StrTemp = substituye (StrTemp, mediados de (strEng2, lCharacterPosition, 1), "", 1)
                    'incrementar el contador
                    iCounter = iCounter + 1
               Terminar si
           lLoopPosition siguiente





'processtime = sw.EndTimer y “milisegundos”
'Debug.Print sw.EndTimer
'iCounter de Debug.Print
CharacterRank = iCounter



Función del final
Función pública NomRank (StrClient como secuencia, CWNomIn como doble) como número entero


ValueIn dévil como doble
StrReturnedFromClientString dévil como secuencia

Si IsNull (CWNomIn) entonces
    ValueIn = 0

    ValueIn = CWNomIn
Terminar si

StrReturnedFromClientString = GetCC (StrClient)
Si StrComp (CStr (ValueIn), StrReturnedFromClientString, 1) = falso entonces
    NomRank = 1
    Salir la función
Terminar si


NomRank = 0
Función del final




Función pública KWRank (de ClientIn variante tan, CWKWIn como de largo, varianceIn opcional como número entero) como número entero

ValueMin dévil como de largo
ValueMax dévil como de largo
ValueIn dévil como de largo
ValueCWIn dévil como de largo
Amortiguar A como de largo

ValueCWIn = CWKWIn

Si (varianceIn) = 0 entonces

    ValueMin = ValueCWIn - 5
    ValueMax = ValueCWIn + 5


    ValueMin = ValueCWIn - varianceIn
    ValueMax = ValueCWIn + varianceIn

Terminar si


    Si ValueCWIn = ClientIn después
       KWRank = 2
       Salir la función
    
      Para A = ValueMin a ValueMax
        Si ClientIn = A después
           KWRank = 1
           Salir la función
        Terminar si
      Después A
    Terminar si
    
KWRank = 0

Función del final

Función pública BhpRank (de ClientIn variante tan, CalcBHP como de largo, varianceIn opcional como número entero) como número entero

ValueMin dévil como de largo
ValueMax dévil como de largo
ValueIn dévil como de largo
ValueCWIn dévil como de largo
Amortiguar A como de largo

ValueCWIn = CalcBHP

Si (varianceIn) = 0 entonces

    ValueMin = ValueCWIn - 5
    ValueMax = ValueCWIn + 5


    ValueMin = ValueCWIn - varianceIn
    ValueMax = ValueCWIn + varianceIn

Terminar si


    Si ValueCWIn = ClientIn después
       BhpRank = 2
       Salir la función
    
      Para A = ValueMin a ValueMax
        Si ClientIn = A después
           BhpRank = 1
           Salir la función
        Terminar si
      Después A
    Terminar si
    
BhpRank = 0

Función del final



Función pública ValveRank (de ClientStr variante tan, CWCylindersIn como número entero)
ValueIn dévil como número entero
ClientValveCount dévil como de largo
CylinderCountIn dévil como de largo

 Si IsNull (CWCylindersIn) entonces
    ValueIn = 0
            
 
    CylinderCountIn = CWCylindersIn
   
 Terminar si


 
 ¡Si IsNull ([formas]! ¡[cañería]! [VÁLVULAS POR EL CILINDRO]. Valor) entonces
    ValueIn = 0
            
 
    ¡ValueIn = [formas]! ¡[cañería]! [VÁLVULAS POR EL CILINDRO]. Valor * CylinderCountIn
     ClientValveCount = GetNumValves (ClientStr)
 Terminar si

Si ValueIn = ClientValveCount y ValueIn > 0 entonces
    ValveRank = 1
    Salir la función
Terminar si

 ValveRank = 0



Función del final

Función GetNumValves (texto)
    Posición dévil como número entero
    Hacer
        posición = InStr (posición + 1, texto, “V”)
        Si posición > 2 entonces
            Si es mediados de (texto, posición - 2, 2) como “##” entonces
                GetNumValves = Val (mediados de (texto, posición - 2, 2))
                Salir la función
            Terminar si
        Terminar si
        Si posición > 1 entonces
            Si es mediados de (texto, posición - 1, 1) como “#” entonces
                GetNumValves = Val (mediados de (texto, posición - 1, 1))
                Salir la función
            Terminar si
        Terminar si
    Colocar mientras que posición
    GetNumValves = 0
Función del final


Función pública FuelRank (StrClient, CWFuelIn como secuencia) como de largo
ValueIn dévil como secuencia
Si IsNull (CWFuelIn) entonces
    ValueIn = ""

    ValueIn = CWFuelIn
Terminar si

Si StrComp (dejado (ValueIn, 1), StrClient, 1) = falso entonces
    FuelRank = 1
    Salir la función
Terminar si

 FuelRank = 0

Función del final
Función pública DoorRank (ClientStr como secuencia, CWDoorsIn como número entero) como número entero

ValueIn dévil como número entero
ClientDoorCount dévil como de largo

 Si IsNull (CWDoorsIn) entonces
    ValueIn = 0
            
 
    ValueIn = CWDoorsIn
     ClientDoorCount = GetDoors (ClientStr)
 Terminar si

Si ValueIn = ClientDoorCount y ValueIn > 0 entonces
    DoorRank = 1
    Salir la función
Terminar si

 DoorRank = 0

Función del final
Función pública TransmissionRank (ClientStr como secuencia, CWTransmissionIn como secuencia)
ValueIn dévil como secuencia




 
 Si IsNull (CWTransmissionIn) entonces
    ValueIn = ""
            
 
    ValueIn = CWTransmissionIn
     
 Terminar si

Si StrComp (ValueIn, ClientStr, 1) = falso entonces
    TransmissionRank = 1
    Salir la función
Terminar si

TransmissionRank = 0

Función del final
Función GetDoors (ClientStr como secuencia) como número entero
Regex dévil como objeto
Fósforo dévil como objeto

    Fijar el regex = CreateObject (“vbscript.regexp”)
    'filtrar para los números y “d separados por el espacio”
    regex. Patrón = “[0-9] + d”

    'apagar el caso
    regex.IgnoreCase = verdad
    'crear el objeto

    Fijar el fósforo = el regex. Ejecutar (ClientStr)
    'fijar o conseguir el valor
    Si fósforo. Cuenta > 0 entonces GetDoors = ajustes (Val (fósforo (0)))
    'objeto de la matanza
    Fijar el regex = nada
Terminar la función

Función pública CCRank (de ClientIn variante tan, CWCCIn como de largo, varianceIn opcional como número entero) como número entero

ValueMin dévil como de largo
ValueMax dévil como de largo
ValueIn dévil como de largo
ValueCWIn dévil como de largo

Amortiguar A como de largo



ValueCWIn = CWCCIn

Si (varianceIn) = 0 entonces

    ValueMin = ValueCWIn - 5
    ValueMax = ValueCWIn + 5


    ValueMin = ValueCWIn - varianceIn
    ValueMax = ValueCWIn + varianceIn

Terminar si


    Si ValueCWIn = ClientIn después
       CCRank = 2
       Salir la función
    
      Para A = ValueMin a ValueMax
        Si ClientIn = A después
           CCRank = 1
           Salir la función
        Terminar si
      Después A
    Terminar si

CCRank = 0
Función del final
Función pública BhpStrRank (StrClient como secuencia, CWBhp como de largo, variación opcional como número entero)
StrCientln dévil como secuencia
ValueMin dévil como de largo
ValueMax dévil como de largo
ValueCWIn dévil como de largo
Amortiguar A como de largo
Amortiguar B como de largo
Amortiguar StrTemp como secuencia
Amortiguar StrTemp2 como secuencia
Amortiguar StrArray () como secuencia
Amortiguar al revés como número entero
Amortiguar el teststr como secuencia


Si IsNull (ValueCWIn) entonces
    ValueCWIn = 0
            

    ValueCWIn = CWBhp
            
Terminar si

Si (varianceIn) = 0 entonces

    ValueMin = ValueCWIn - 5
    ValueMax = ValueCWIn + 5


    ValueMin = ValueCWIn - varianceIn
    ValueMax = ValueCWIn + varianceIn

Terminar si

Si IsNull (ValueCWIn) = verdad o ValueCWIn = 0 entonces


    Si <= 0 de Len (StrClient) o IsNull (StrClient) entonces
    KWStrRank = 0
    Salir la función
    
        Si ValueCWIn = StrClient después
        BhpStrRank = 2
                       
                        
        Salir la función
            
        
        StrTemp = SplitNumeralandText (StrClient)
        
            StrTemp2 = RegExpReplace (StrTemp, “[^0-9]”, “")
            StrArray = partió (StrTemp2)
         
            
            Para A = LBound (StrArray ()) A UBound (StrArray ())
                Para B = ValueMin a ValueMax
                    Si (StrComp (StrArray (A), CStr (B), 1) = falso) entonces
                       
                            BhpStrRank = 1
                       
                        
                        Salir la función
                    Terminar si
                    B siguiente
            Después A
        Terminar si
        
   Terminar si
Terminar si


BhpStrRank = 0
Función del final

Función pública KWStrRank (StrClient como secuencia, CWKw como de largo, variación opcional como número entero)
StrCientln dévil como secuencia
ValueMin dévil como de largo
ValueMax dévil como de largo
ValueCWIn dévil como de largo
Amortiguar A como de largo
Amortiguar B como de largo
Amortiguar StrTemp como secuencia
Amortiguar StrTemp2 como secuencia
Amortiguar StrArray () como secuencia
Amortiguar al revés como número entero
Amortiguar el teststr como secuencia


Si IsNull (ValueCWIn) entonces
    ValueCWIn = 0
            

    ValueCWIn = CWKw
            
Terminar si

Si (varianceIn) = 0 entonces

    ValueMin = ValueCWIn - 5
    ValueMax = ValueCWIn + 5


    ValueMin = ValueCWIn - varianceIn
    ValueMax = ValueCWIn + varianceIn

Terminar si

Si IsNull (ValueCWIn) = verdad o ValueCWIn = 0 entonces


    Si <= 0 de Len (StrClient) o IsNull (StrClient) entonces
    KWStrRank = 0
    Salir la función
    
        Si ValueCWIn = StrClient después
        KWStrRank = 2
                       
                        
        Salir la función
            
        
        StrTemp = SplitNumeralandText (StrClient)
        
            StrTemp2 = RegExpReplace (StrTemp, “[^0-9]”, “")
            StrArray = partió (StrTemp2)
         
            
            Para A = LBound (StrArray ()) A UBound (StrArray ())
                Para B = ValueMin a ValueMax
                    Si (StrComp (StrArray (A), CStr (B), 1) = falso) entonces
                       
                            KWStrRank = 1
                       
                        
                        Salir la función
                    Terminar si
                    B siguiente
            Después A
        Terminar si
        
   Terminar si
Terminar si


KWStrRank = 0



Función del final

getTechDetail público de la función (StrClient como secuencia, TechSpec como secuencia, variación opcional como número entero) como número entero
'StrCientln dévil como secuencia
'ValueMin dévil como de largo
'ValueMax dévil como de largo
'ValueIn dévil como de largo
'Amortiguar A como de largo
'B dévil como de largo
'StrTemp dévil como secuencia
'StrTemp2 dévil como secuencia
'StrArray dévil () como secuencia
'Contador dévil como número entero
'Teststr dévil como secuencia

Si StrClient = "" o “0” entonces






Si (variación) = 0 entonces variaciones = 5

 
       

     
        
        

 



Si IsNull (ValueIn) = verdad o ValueIn = 0 entonces


    Si <= 0 de Len (StrClient) o IsNull (StrClient) entonces
    getTechDetail = 0
    Salir la función
    
        Si ValueIn = StrClient después
        getTechDetail = 2
                       
                        
        Salir la función
            
        
        StrTemp = SplitNumeralandText (StrClient)
        
            StrTemp2 = RegExpReplace (StrTemp, “[^0-9]”, “")
            StrArray = partió (StrTemp2)
            ValueMin = ValueIn - variación
            ValueMax = ValueIn + variación
            
            Para A = LBound (StrArray ()) A UBound (StrArray ())
                Para B = ValueMin a ValueMax
                    Si (StrComp (StrArray (A), CStr (B), 1) = falso) entonces
                       
                            getTechDetail = 1
                       
                        
                        Salir la función
                    Terminar si
                    B siguiente
            Después A
        Terminar si
        
   Terminar si
Terminar si
Terminar si

getTechDetail = 0
Función del final
Función pública BodyRank (ClientStr como secuencia)
ValueIn dévil como secuencia




 
 ¡Si IsNull ([formas]! ¡[cañería]! [Cuerpo común alias CW]. Valor) entonces
    ValueIn = ""
            
 
    ¡ValueIn = [formas]! ¡[cañería]! [Cuerpo común alias CW]. Valor
     
 Terminar si

Si StrComp (ValueIn, ClientStr, 1) = falso entonces
    BodyRank = 1
    Salir la función
Terminar si

BodyRank = 0

Función del final
class= del

Respuesta : tipo vba de la discusión del byref del error de la unión mal hecha

Los parecer de I t su problema son que usted ha definido CWValueIn mientras que la variante y en las funciones ellos está contando con siempre un largo.
Ejemplo KWRank (de ClientIn variante tan, CWKWIn como de largo.

Gary
Otras soluciones  
 
programming4us programming4us