Visual Basic - Ayuda con función e índice de menús (incluye código fuente)

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Ayuda con función e índice de menús (incluye código fuente)

Publicado por Sahid Ra Gutierrez Cruz (191 intervenciones) el 13/03/2021 10:59:50

Anexo al final del mensaje el código fuente del FORM (para no transcribir los menús)
y abajo anexo el contenido del formulario para su análisis, copiar y pegar en e FORM)




Saludos tengo la siguiente duda, espero me puedan ayudar de antemano gracias.

En el editor de menús cree la siguiente estructura
1
2
3
4
5
Numeros (mNumeros)
...Primer rango (mRango1)
......Rango1 (mR1 índice 0)'Este menú con índice es con el que trabajaremos
...Segundo rango (mRango2)
......Rango2 (mR2 índice 0)'Este menú con índice es con el que trabajaremos

Aquí el código para copiar y pegar.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
 
Private Sub Form_Load()
 Dim Rango1 As String
 Dim Rango2 As String
 Rango1 = "0,1,2,3,4," 'Asigno el rango uno
 Rango2 = "5,6,7,8,9,"
 Do While Rango1 <> "" 'Repito el rango uno mientras contenga elementos
  mR1(mR1.Count - 1).Caption = Mid(Rango1, 1, InStr(Rango1, ",") - 1) 'Asigno el primer elemento del rango
  Rango1 = Mid(Rango1, InStr(Rango1, ",") + 1) 'Elimino el primer elemento del rango
  Load mR1(mR1.Count) 'Creo un nuevo elemento del menú
 Loop: Unload mR1(mR1.Count - 1) 'Elimino el ultimo elemento del menú
 Do While Rango2 <> ""
  mR2(mR2.Count - 1).Caption = Mid(Rango2, 1, InStr(Rango2, ",") - 1)
  Rango2 = Mid(Rango2, InStr(Rango2, ",") + 1)
  Load mR2(mR2.Count)
 Loop: Unload mR2(mR2.Count - 1)
End Sub


Hice lo siguiente pero me manda un error "Run-time error 13 (en la linea 13)" que me
recomiendan para solventarlo: En la designación de parámetros para el menú es
brinca el problema.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Explicit
 
Public Function AsignaRangos(arRango As String, arR As Menu)
 If Left(arRango, 1) <> "," Then arRango = arRango + ","
 Do While arRango <> ""
  arR(arR.Count - 1).Caption = Mid(arRango, 1, InStr(arRango, ",") - 1)
  arRango = Mid(arRango, InStr(arRango, ",") + 1)
  Load arR(arR.Count)
 Loop: Unload arR(arR.Count - 1)
End Function
 
Private Sub Form_Load()
 Dim Rango1 As String: Rango1 = "0,1,2,3,4,"
 Dim Rango2 As String: Rango2 = "5,6,7,8,9,"
 AsignaRangos Rango1, mR1
 AsignaRangos Rango2, mR2
End Sub

CODIGO FUNTE DEL FORM (Rangos.frm)
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
VERSION 5.00
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   3750
   ClientLeft      =   225
   ClientTop       =   870
   ClientWidth     =   5175
   LinkTopic       =   "Form1"
   ScaleHeight     =   3750
   ScaleWidth      =   5175
   StartUpPosition =   3  'Windows Default
   Begin VB.Menu mNumeros
      Caption         =   "Numeros"
      Begin VB.Menu mRango1
         Caption         =   "Primer rango"
         Begin VB.Menu mR1
            Caption         =   "Rango1"
            Index           =   0
         End
      End
      Begin VB.Menu mRango2
         Caption         =   "Segundo rango"
         Begin VB.Menu mR2
            Caption         =   "Rango2"
            Index           =   0
         End
      End
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Tengan felices líneas de programación.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Ayuda con función e índice de menús (incluye código fuente)

Publicado por Sahid Ra Gutierrez Cruz (191 intervenciones) el 13/03/2021 11:19:35
Solucionado :) la respuesta es OBJECT

y en la función cambiar la siguiente linea:
1
arRango = Mid(arRango, InStr(arRango, ",") + 1)

por esta otra que agrega una condición para salir del ciclo antes
1
arRango = Mid(arRango, InStr(arRango, ",") + 1): If arRango = "," Then Exit Do

porque sino se creara un menú sin caption

Saludos y felices líneas de programación
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar