Sugeriría separar su código en función de la funcionalidad y el propósito específico de cada hoja o módulo. De esta manera, solo colocaría el código relativo a la UI de la hoja dentro del módulo de la hoja y solo colocaría el código relacionado con los módulos en los respectivos módulos. Además, utilice módulos separados para encapsular código que se comparte o reutiliza entre varias hojas diferentes.
Por ejemplo, digamos que varias hojas que son responsables de mostrar los datos de una base de datos de una manera especial. ¿Qué tipo de funcionalidad tenemos en esta situación? Tenemos funciones relacionadas con cada hoja específica, tareas relacionadas con la obtención de datos de la base de datos y tareas relacionadas con rellenar una hoja con datos. En este caso, podría comenzar con un módulo para el acceso a datos, un módulo para llenar una hoja con datos, y dentro de cada hoja tendré código para acceder al código en esos módulos.
Se podría disponer así.
Módulo: DataAccess:
Function GetData(strTableName As String, strCondition1 As String) As Recordset
'Code Related to getting data from the database'
End Function
Módulo: PopulateSheet:
Sub PopulateASheet(wsSheet As Worksheet, rs As Recordset)
'Code to populate a worksheet '
End Function
Hoja: Código Hoja1:
Sub GetDataAndPopulate()
'Sample Code'
Dim rs As New Recordset
Dim ws As Worksheet
Dim strParam As String
Set ws = ActiveSheet
strParam = ws.Range("A1").Value
Set rs = GetData("Orders",strParam)
PopulateASheet ws, rs
End Sub
Sub Button1_Click()
Call GetDataAndPopulate
End Sub
notación húngara como im Completado en la Convención de Nombramiento Reddick ha sido más o menos el estándar para nombres variables para Visual Basic para Aplicaciones y VB6. Mientras que ciertamente evitaría su uso en .NET donde las herramientas son muy fuertes, no está de más usarlo en VBA, donde las herramientas son más antiguas. –
@Ben - "Húngaro loco" se dijo irónicamente :) Mientras que el húngaro ayuda con la falta de tipado estático y las herramientas alrededor de "¿qué es esto otra vez?", Creo que se queda corto cuando se va más hacia el objetivo- VBA orientado y comienza a crear tus propios objetos de dominio. Mi mayor queja, sin embargo, es que el húngaro realmente ensucia con el flujo del código de * lectura *. Cada uno para los suyos, no es un punto religioso para mí. Pero si alguien pregunta, no lo recomendaré. – jevakallio
Buen punto. Estoy de acuerdo con que al construir clases en VBA, el húngaro puede hacer que tus objetos se vean feos. Tal vez todavía lo uso en VB6 para recordarme a mí mismo que estoy trabajando en VB6 :-). –