Lezione 12
Download
1 / 19

Lezione 12 - PowerPoint PPT Presentation


  • 92 Views
  • Uploaded on

Lezione 12. Esercizi. INFORMAZIONI. Esami Orale non previsto (eventuali domande a facoltà del professore) Uso libero di excel Il compito è tutto nel file xls 2 ore di tempo. Indicare il contenuto delle celle B1 ed B2 dopo l’esecuzione del seguente codice VBA:  Option Explicit Sub ex()

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Lezione 12' - bardia


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Lezione 12

Lezione 12

Esercizi

Elementi di Programmazione


Informazioni
INFORMAZIONI

  • Esami

    • Orale non previsto (eventuali domande a facoltà del professore)

    • Uso libero di excel

    • Il compito è tutto nel file xls

    • 2 ore di tempo

Elementi di Programmazione


Domanda 8 ex lex 11

Indicare il contenuto delle celle B1 ed B2 dopo l’esecuzione del seguente codice VBA: 

Option Explicit

Sub ex()

Dim x As Double, y As Double

x = 4

y = 8

y = y ^ 2 + x / 3

x = y + 10

Range("B1").Value = Application.WorksheetFunction.Floor(x, 1)

Range("B2").Value = y

End Sub

Domanda 8 (ex lex.11)

Elementi di Programmazione


Domanda 8 ex lex 111

Indicare il contenuto delle celle B1 ed B2 dopo l’esecuzione del seguente codice VBA: 

Option Explicit

Sub ex()

Dim x As Double, y As Double

x = 4

y = 8

y = y ^ 2 + x / 3

x = y + 10

Range("B1").Value = _

Application.WorksheetFunction.Floor(x, 1)

Range("B2").Value = y

End Sub

x y

4 8

4 65.333

75.3333 65.333

Domanda 8 (ex lex.11)

Elementi di Programmazione


Domanda 8 ex lex 112

Indicare il contenuto delle celle B1 ed B2 dopo l’esecuzione del seguente codice VBA: 

Option Explicit

Sub ex()

Dim x As Double, y As Double

x = 4

y = 8

y = y ^ 2 + x / 3

x = y + 10

Range("B1").Value = _

Application.WorksheetFunction.Floor(x, 1)

Range("B2").Value = y

End Sub

x y

4 8

4 65.333

75.3333 65.333

B1 = 75

B2 = 65.333

Domanda 8 (ex lex.11)

Elementi di Programmazione


Esercizio 1
Esercizio 1 l’esecuzione del seguente codice VBA: 

  • Scrivere la sub VBA che legge dei numeri decimali dal file di testo dati.txt dove sono scritti uno per riga e quindi riempie consecutivamente la colonna A del foglio di lavoro con i valori positivi, la colonna B con quelli negativi.

Elementi di Programmazione


Esercizio 11
Esercizio 1 l’esecuzione del seguente codice VBA: 

Option Explicit

Sub carica()

Dim v As Variant

Dim pos As Integer, neg As Integer

Open ThisWorkbook.Path & "\dati.txt" For Input As 1

pos = 1

neg = 1

While Not EOF(1)

Input #1, v

If (IsNumeric(v)) Then

If (v > 0) Then

Cells(pos, 1) = v

pos = pos + 1

Else

Cells(neg, 2) = v

neg = neg + 1

End If

End If

Wend

Close #1

End Sub

Elementi di Programmazione


Esercizio 2
Esercizio 2 l’esecuzione del seguente codice VBA: 

  • Scrivere una UserForm che viene richiamata nel foglio elettronico con un bottone che permette di acquisire due valori X ed Y e che scrive nella cella B3 del foglio "Esercizio2“ il maggiore dei due.

Elementi di Programmazione


Esercizio 21
Esercizio 2 l’esecuzione del seguente codice VBA: 

  • Scrivere

    • una UserForm (“moduloAcquisizione”)

    • che viene richiamata nel foglio elettronico con un bottone (“parti”)

    • che permette di acquisire due valori

      • X (“primoVal”)

      • Y (“secondoVal”)

    • e che (cliccando un bottone “calcolo”) scrive nella cella B3 del foglio “Esercizio2” il maggiore dei due

Elementi di Programmazione


Esercizio 22
Esercizio 2 l’esecuzione del seguente codice VBA: 

Private Sub calcolo_Click()

Dim x As Double, y As Double

x = CDbl(moduloAcquisizione.primoVal.Value)

y = CDbl(moduloAcquisizione.secondoVal.Value)

If (x > y) Then

Sheets("Esercizio2").Range("B3").Value = x

Else

Sheets("Esercizio2").Range("B3").Value = y

End If

moduloAcquisizione.Hide

End Sub

La UserForm1 si chiama “moduloAcquisizione”

(ed il bottone del form per eseguire il calcolo si chiama “calcolo”)

Elementi di Programmazione


Esercizio 23
Esercizio 2 l’esecuzione del seguente codice VBA: 

Private Sub parti_Click()

ModuloAcquisizione.Show

End Sub

nel Foglio dove vi è il bottone di nome parti

Elementi di Programmazione


Esercizio 3
Esercizio 3 l’esecuzione del seguente codice VBA: 

  • Scrivere una sub VBA che legge i valori contenuti nelle celle da A1 a D5 e quindi

    • carica il vettore X con i primi 8 valori positivi contenuti nell’intervallo. Se vi sono meno di 8 valori ridimensiona il vettore al numero di elementi effettivamente presenti

    • Attraverso la funzione max restituisce l’elemento di valore massimo del vettore che viene scritto in F1

Elementi di Programmazione


Esercizio 3 note sugli array

0 l’esecuzione del seguente codice VBA: 

1

4

5

2

3

Esercizio 3 – Note sugli array

  • X(5) con option base 0 o senza

  • X(5) con option base 1

1

4

5

2

3

Elementi di Programmazione


Esercizio 31
Esercizio 3 l’esecuzione del seguente codice VBA: 

  • Scrivere una sub VBA (“lettura”)

    che legge i valori contenuti nelle celle da A1 a D5

    e quindi

    • carica il vettore X

      • con i primi 8 valori positivi contenuti nell’intervallo.

      • Se vi sono meno di 8 valori ridimensiona il vettore al numero di elementi effettivamente presenti

    • Attraverso la funzione max restituisce l’elemento di valore massimo del vettore che viene scritto in F1

      • Funzione “max” :

        • Riceve un vettore vt

        • Restituisce il valore massimo contenuto

Elementi di Programmazione


Esercizio 32

Option Base 1 l’esecuzione del seguente codice VBA: 

Option Explicit

Function max(vt() As _

Double) As Double

Dim i As Integer

max = vt(LBound(vt))

For i = LBound(vt) + 1 _

To UBound(vt)

If max < vt(i) Then

max = vt(i)

End If

Next

End Function

La soluzione del problema non può far caricare prima il vettore per poi ridimensionarlo perché

Senza l’opzione Preserve di ReDim si perde il contenuto del vettore

Con l’opzione non è possibile ridimensionarlo ad una lunhezza inferiore

Esercizio 3

Elementi di Programmazione


Esercizio 33

Sub lettura() l’esecuzione del seguente codice VBA: 

Dim y() As Double, X() As Double

Dim i As Integer, j As Integer, v

i = 1

ReDim y(8)

For Each v In Range("A1:D3")

If IsNumeric(v) Then

If (v > 0) Then

y(i) = v

i = i + 1

End If

End If

If i > 8 Then

Exit For

End If

Next

ReDim X(i - 1)

For j = LBound(y) To i - 1

X(j) = y(j)

Next

Range("F1").Value = max(X)

End Sub

Esercizio 3

Elementi di Programmazione


Esercizio 4
Esercizio 4 l’esecuzione del seguente codice VBA: 

  • Aggiungere al foglio elettronico la funzione opera che dato un intervallo di valori anche disgiunto restituisce la somma dei valori interi contenuti nell’intervallo

    • Definire ed usare la funzione eIntero per verificare se un valore è un numero intero

Elementi di Programmazione


Esercizio 41
Esercizio 4 l’esecuzione del seguente codice VBA: 

  • Aggiungere al foglio elettronico (modulo)

    • la funzione “opera”

    • che dato un intervallo di valori anche disgiunto

    • restituisce la somma dei valori interi contenuti nell’intervallo

    • Definire ed usare la funzione “eIntero” ()

    • per verificare se un valore è un numero intero

Elementi di Programmazione


Esercizio 42

Option Explicit l’esecuzione del seguente codice VBA: 

Function eIntero(el As _

Variant) As Boolean

eIntero = False

If (IsNumeric(el)) Then

If (CInt(el) = el) Then

eIntero = True

End If

End If

End Function

Function Opera( _

ParamArray interv() As _

Variant) As Integer

Dim i As Integer, v

For i = LBound(interv) To _

UBound(interv)

For Each v In interv(i)

If eIntero(v) Then

Opera = Opera + v

End If

Next

Next

End Function

Esercizio 4

Elementi di Programmazione


ad