Appunti di VBA per EXCEL 2000

Materie:Appunti
Categoria:Informatica

Voto:

2.5 (2)
Download:1112
Data:08.02.2007
Numero di pagine:6
Formato di file:.doc (Microsoft Word)
Download   Anteprima
appunti-vba-excel-2000_1.zip (Dimensione: 19.15 Kb)
trucheck.it_appunti-di-vba-per-excel-2000.doc     119.5 Kb
readme.txt     59 Bytes


Testo

Appunti di VBA per EXCEL 2000

Codice VBA EXCEL commentato
Gli esempi che seguono, vista la loro semplicità, hanno l’unico scopo di mostrare in modo sintetico come usare le funzioni fondamentali messe a disposizione dal VBA di EXCEL 2000.
Si raccomanda di tentare di risolvere l’esercizio autonomamente prima di ricorrere alla soluzione per evitare che i presenti appunti diventino uno sterile eserciziario.
ESERCIZIO 1
Realizzare una macro che scriva una stringa, scelta dal programmatore a tempo di sviluppo del codice, nelle prime 10 celle in diagonale dalla A1 del foglio elettronico attivo.
Soluzione:
Sub M_Macro1()
Dim cont As Integer
For cont = 1 To 10
Worksheets("Foglio1").Cells(cont, cont) = "Stefano !!!"
Next cont
End Sub
ESERCIZIO 2
Realizzare una macro che scriva una stringa, scelta dal programmatore a tempo di sviluppo del codice, nel range di celle dalla B1 alla K10 del foglio elettronico attivo.
Soluzione:
Sub M_Macro2()
Range("B1:K10") = "Stefano !!!"
End Sub
ESERCIZIO 3
Realizzare una macro che scriva una stringa, scelta dal programmatore a tempo di sviluppo del codice, nella cella attualmente attiva del foglio elettronico attivo.
Soluzione:
Sub M_Macro3()
ActiveCell.Value = "Stefano !!!"
End Sub
ESERCIZIO 4
Realizzare una macro che visualizzi una finestra di messaggio nella quale viene specificato il numero di righe e colonne dell’area selezionata dall’utente prima dell’attivazione della macro.
Soluzione:
Sub M_Macro4()
Dim c, r As Integer
c = Selection.Columns.Count
r = Selection.Rows.Count
MsgBox "Il numero delle colonne selezionate è " & c & ". Quello delle righe è " & r
End Sub
ESERCIZIO 5
Realizzare una macro che letto una valore numerico da una finestra di dialogo, lo scriva nelle celle selezionate dall’utente prima della attivazione della macro. Prima della visualizzazione sullo schermo del risultato della macro visualizzare una finestra di dialogo che presenti una richiesta di conferma della azione richiesta alla macro.
Soluzione:
Sub M_Macro5()
Dim stringa As String
Dim celle, var As Integer
stringa = InputBox("Inseriscri il valore da copiare", "M_Macro5", "Stefano !!!")
celle = Selection.Cells.Count
If stringa "" Then
var = MsgBox("Verrà scritto " & stringa & " in " & celle & " celle", vbExclamation + vbYesNo)
If var = vbYes Then
Selection.Value = stringa
End If
End Sub
ESERCIZIO 6
Realizzare una macro che scriva una stringa scelta dal programmatore a tempo di sviluppo dell’applicazione in un’area compresa fra due estremi letti in input tramite finestra di dialogo.
Soluzione:
Sub M_Macro6()
Dim cella1, cella2 As String
Worksheets("Foglio1").Activate
cella1 = InputBox("Inserisci cella di inizio")
If cella1 "" Then
cella2 = InputBox("Inserisci cella di fine")
If cella2 "" Then
Range(cella1, cella2) = "Stefano !!!"
End If
End If
End Sub
ESERCIZIO 7
Realizzare una macro che scriva numeri naturali consecutivamente, a partire da 1, nella area selezionata dall’utente a tempo di esecuzione.
Soluzione:
Sub M_Macro7()
Dim cella1, cella2, attiva As String
Dim c, r, i, j As Integer
c = Selection.Columns.Count
r = Selection.Rows.Count
For i = 1 To r
For j = 1 To c
Selection.Cells(i,j) = j + ((i-1) * r)
Next j
Next i
End Sub
ESERCIZIO 8
Realizzare una macro che visualizzi numeri casuali all’interno dell’area selezionata dall’utente prima dell’attivazione della macro. Gli estremi di generazione dei numeri devono essere letti run-time tramite una finestra di dialogo.
Soluzione:
Sub M_Macro8()
Dim cella1, cella2, attiva As String
Dim c, r, i, j As Integer
Dim inf, sup As Integer
Randomize
If Selection.Cells.Count = 0 Then
MsgBox "Spiacente, è necessario selezionare l'area prima"
Else
inf = InputBox("Inserire inf per generazione numeri casuali")
sup = InputBox("Inserire sup per generazione numeri casuali")
c = Selection.Columns.Count - 1
r = Selection.Rows.Count - 1
For i = 1 To r
For j = 1 To c
'Genero numeri casuali compresi fra inf e sup
Selection.Cells(i, j) = Int(Rnd() * (sup-inf+1)+inf)
Next j
Next i
End If
End Sub
ESERCIZIO 9
Realizzare una macro che permetta ala pressione di un pulsante collocato sul foglio elettronico attivo di eseguire le seguenti operazioni:
• generare numeri casuali nell’area selezionata dall’utente tramite mouse sul foglio elettronico attivo; i numeri devono essere compresi fra 5 e 10
• contare il numero di volte che una cella dell’area selezionata contiene un valore uguale alla cella adiacente a destra
Un esempio di output potrebbe è il seguente:
5
5
5
8
8
7
10
7
7
Il risultato che deve essere comunicato all’utente deve essere 4.
Soluzione
Private Sub CommandButton1_Click()
riga = 3 'riga di inizio visualizzazione numeri casuali
colonna = 3 'colonna di inizio visualizzazione numeri casuali
N = Cells(1, 4) 'numero di numeri casuali da generare
cont = 0
inf = Cells(1, 10)
intervallo = Cells(1, 7) - inf + 1
For i = 0 To (N - 1)
For j = 0 To (N - 1)
Cells(riga + i, colonna + j) = Int(Rnd() * intervallo) + inf
Next j
Next i
For i = 0 To (N - 1)
For j = 0 To (N - 2)
If Cells(riga + i, colonna + j) = Cells(riga + i, colonna + j + 1) Then
cont = cont + 1
End If
Next j
Next i
Cells(1, 12) = cont
End Sub
ESERCIZIO 10
Realizzare una macro che generati dei numeri casuali fra 1 e 10 in un’area selezionata dall’utente prima dell’attivazione della macro stessa, determini la frequenza relativa di uno numero specificato dall’utente all’interno della selezione. Il numero di cui calcolare la frequenza relativa deve essere letto tramite finestra di dialogo e l’output deve essere una finestra di messaggio.
Soluzione:
Sub M_Macro9()
'///////////////////////////////////////////////////////////////////////////////////////////////////
' Dichiarazione variabili
Dim i, j, As Integer 'Contatori di riga e colonna rispettivamente
Dim c, r, n As Integer 'Numero di colonne, righe e celle della area selezionata
Dim val, cont As Integer 'Numero di cui calcolo la f relativa e sua frequenza assoluta
Randomize
'///////////////////////////////////////////////////////////////////////////////////////////////////
' Inizializzazioni
c = Selection.Columns.Count 'Determino il numero delle colonne della selezione
r = Selection.Rows.Count 'Determino il numero delle righe della selezione
n = Selection.Cells.Count 'Determino il numero totale di elementi della popolazione
'Inizializzo il foglio di presentazione
Worksheets("Foglio2").Cells(1, 1) = "Numero"
Worksheets("Foglio2").Cells(1, 3) = "f relativa"
'///////////////////////////////////////////////////////////////////////////////////////////////////
'Assegno numeri casuali all'interno dell'area selezionata dall'utente
For i = 1 To r
For j = 1 To c
'Assegna un numero casuale alla cella di riga 'i' e colonna 'j' all'interno dell'area selezionata
Selection.Cells(i, j) = Int(Rnd() * 11)
Next j
Next i
'///////////////////////////////////////////////////////////////////////////////////////////////////
'Calcolo la frequenza con cui ogni elemento che è stato generato compare nella selezione
For val = 0 To 10 'Eseguo il ciclo per cercare i numeri all'interno della serie generata
cont = 0 'Inizializzo a 0 il valore della frequenza assoluta del numero "val"
For i = 1 To r
For j = 1 To c
If Selection.Cells(i, j) = val Then 'Controllo se la cella di coordinate (i,j)
'contiene il valore per il quale stò facendo il conteggio della frequenza relativa
cont = cont + 1 'Incremento la frequenza assoluta
End If
Next j
Next i
'///////////////////////////////////////////////////////////////////////////////////////////////////
' Output dei risultati
'///////////////////////////////////////////////////////////////////////////////////////////////////
Worksheets("Foglio2").Cells(2 + val, 1) = val 'Comunico il valore al quale si
'riferisce il dato calcolato di seguito
Worksheets("Foglio2").Cells(2 + val, 3) = cont / n 'Calcolo della frequenza relativa
'///////////////////////////////////////////////////////////////////////////////////////////////////
Next val
End Sub
Guida rapida
Il contenuto di questa appendice serve solo come riferimento rapido per la sintassi di VB 6 e EXCEL 2000.
ISTRUZIONI DI ITERAZIONE
Ciclo For
Viene di solito utilizzato quando è noto a priori il numero di volte che il corpo del ciclo dovrà essere ripetuto.
La sintassi è la seguente :
For counter = start To end [Step passo]
[corpo del ciclo]
[Exit For]
[corpo del ciclo]
Next [counter]
Counter = contatore del ciclo
Start = valore iniziale per Counter
End = valore finale per Counter
Passo = passo del conteggio. Attribuendo a Passo valori negativi il
conteggio avverrà all’indietro
Ciclo Do
Di solito viene utilizzato quando non è noto a priori il numero delle volte che dovrà essere ripetuto il corpo del ciclo.
Può essere usato per realizzare cicli pre-condizionati (il controllo viene eseguito prima del corpo del ciclo) o post-condizionati (il controllo viene eseguito dopo il corpo del ciclo).
Nel caso pre-condizionato abbiamo la seguente sintassi :
Do [{While | Until} condizione]
[corpo del ciclo]
[Exit Do]
[corpo del ciclo]
Loop
Nel caso post-condizionato abbiamo la seguente sintassi :
Do
[corpo del ciclo]
[Exit Do]
[corpo del ciclo]
Loop [{While | Until} condizione]
Condizione = espressione che fornisce un risultato logico (Boolean).
Possono essere usati >,

Esempio



  


  1. Jodi

    I hate my life but at least this makes it beaabrle.