Logo_Access_global_380x114Favicon_Access_global_180x180Logo_Access_global_380x114Logo_Access_global_380x114
  • Home
  • University
    • Destellos formativos
  • Labs
  • TV
  • Secciones
    • El mundo de Access
    • Explorando VBA
      • Artículos sobre VBA
      • Un trocito de código
    • Entrevistas
      • Profesionales de Access
    • El rincón de Excel
    • Bases de datos
      • MS SQL
      • MySQL
      • postgreSQL
      • SQLite
    • Clases magistrales
    • Utilidades hechas con Access
  • Access en el mundo
  • ¿Quiénes somos?
  • Cómo colaborar
  • Eventos
✕
            No hay resultados Mostrar todos los resultados
            VBA: está vacío, es blanco, es nulo, se ha perdido…
            11/10/2023
            VBA: función Join
            17/10/2023
            Mostrar todos

            VBA: números aleatorios

            Publicado por Luis Viadel
            Categorías
            • Destellos formativos
            Etiquetas
            • Collection
            • Randomize
            • Rnd
            Option Compare Database
            Option Explicit
            
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vba-numeros-aleatorios
            '                     Destello formativo 362
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : NúmerosAleatorios
            ' Autor             : Luis Viadel | luisviadel@access-global.net
            ' Fecha             : octubre 223
            ' Propósito         : explorar las posibilidades de generación de números aleatorios en VBA
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Referencias       : https://support.microsoft.com/en-us/office/rnd-function-503cd2e4-3949-413f-980a-ed8fb35c1d80
            '                     https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/randomize-statement
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            
            Private Sub btnGenerar_Click()
            
            'Valor >0
            'Genera aleatorios entre 0 y 1
            '    Me.txtMonitor.Caption = Rnd(10)
            
            
            'Valor <0
            'Repite la secuencia
            '     Me.txtMonitor.Caption = Rnd(-1)
            
            
            'Valor =0
            'Repite el más reciente
            '     Me.txtMonitor.Caption = Rnd(0)
            
            
                Randomize
            'Números aleatorios mayores que 1
            '    Me.txtMonitor.Caption = Rnd * 100
                
            'Número aleatorio entre 1 y 100
            '    Me.txtMonitor.Caption = Int((100 * Rnd) + 1)
                
            'Número aleatorio entre 100 y 1000
            '    Me.txtMonitor.Caption = Int((1000 * Rnd) + 100)
                
                
            'Número aleatorio entre 1 y 10 sin repetición
            Dim matLista() As Long
            Dim i As Long
            
                matLista = ListaUnica(10, 10, 1)
                
                For i = 1 To UBound(matLista)
                    Debug.Print matLista(i)
                Next
                
            End Sub
            
            Function ListaUnica(NumValores As Long, numMax As Long, NumMin As Long) As Variant
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vba-numeros-aleatorios
            '                     Destello formativo 362
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : NúmerosAleatorios
            ' Autor             : Luis Viadel | luisviadel@access-global.net
            ' Fecha             : octubre 223
            ' Propósito         : crear una lista de números aleatorios distintos
            ' Retorno           : matroz con la lista de números
            ' Argumento/s       : la sintaxis de la función consta de los siguientes argumentos:
            '                     Parte              Modo           Descripción
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            '                     NumValores      Obligatorio      número de valores aleatorios que queremos obtener
            '                     numMax          Obligatorio      Valor máximo de la lista de valores
            '                     numMin          Obligatorio      Valor mínimo de la lista de valores
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            'Test:              : para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al
            '                     portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese, rellena los datos de la url y los del
            '                     fichero que deseas descargar y pulsa F5 para ver su funcionamiento.
            '
            'Sub DescargaVersion_test()
            'Dim matLista() As Long
            '
            '    matLista = ListaUnica(10, 10, 1)
            '
            'End Sub
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            Dim ListaRnd As Collection
            Dim i As Long
            Dim matLista() As Long
                  
                Set ListaRnd = New Collection
                
                    Randomize
                 
                    Do
                        On Error Resume Next
                        i = CLng(Rnd * (numMax - NumMin) + NumMin)
                        
                        ListaRnd.Add i, CStr(i)
                                   
                        On Error GoTo 0
                    
                    Loop Until ListaRnd.Count = NumValores
                
                    ReDim matLista(1 To NumValores)
                    
                    For i = 1 To NumValores
                        matLista(i) = ListaRnd(i)
                    Next i
                
                    ListaUnica = matLista()
                    
                Set ListaRnd = Nothing
                    
            End Function
            
            ¡Ver en el repositorio!
            Compartir
            19
            Luis Viadel
            Luis Viadel

            Entradas relacionadas

            29/11/2023

            VBA: Crear un acceso directo a mi programa


            Leer más
            28/11/2023

            VBA: Registro de accesos


            Leer más
            27/11/2023

            VBA: datos de Windows


            Leer más

            1 Comment

            1. Alba Salvá dice:
              17/10/2023 a las 9:14 am

              También es posible utilizar un diccionario, que además cuenta con una función que permite saber si un número ya ha aparecido, con lo cual puedes obligar a que se genere otro. Este método lo utilicé para crear un juego de “Bingo” para la familia.

              Responder

            Deja una respuesta Cancelar la respuesta

            Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

            ETIQUETAS

            Access API Collection ComboBox Consultas CountOfLines Date DCount Diseño DoCmd Excel Execute Fecha FileSystemObject Filtros For Each...Next Formulario Formularios Funciones Funciones de dominio GetFolder Informes InStr Kill Left Listbox Mid Node ProcCountLines ProcOfLine References Replace Ribbon Right RunCommand Shell Split Tablas Tempvars TreeView TwipsFromFont VBA VBE VBIDE WizHook

            ÚLTIMAS ENTRADAS

            • 2
              VBA: Crear un acceso directo a mi programa
              29/11/2023
            • 0
              VBA: Registro de accesos
              28/11/2023

            ¿QUIERES PUBLICITAR TU EMPRESA AQUÍ?

            SUSCRÍBETE A NUESTRO
            NEWSLETTER

            Recibirás información puntual sobre el mundo de Access y VBA

            ¡Próximamente!

            Promovemos el uso de Access y de la programación en VBA en todo el mundo

            Centro de conocimiento


            Toda la sabiduría de los mejores programadores de Access y VBA a tu alcance.

            Legal

            Política de privacidad

            Condiciones de uso

            Condiciones del redactor

            ®Access Global 2021 | All right reserved
                      No hay resultados Mostrar todos los resultados