Discussione: Corso VBA
Visualizza messaggio singolo
Vecchio 08-09-2014, 00.20.15   #56
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.208
Alexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raro
#3

Macro e Procedure varie riferite alle Celle


=> Trovare la prima cella vuota
Codice:
Sub cellaV()
If Range("A1").Value = "" Then
Range("A1").Select
Else
If Range("A1").Value <> "" And Range("A2").Value = "" Then
Range("A2").Select
Else:
Worksheets("Foglio1").Range("A1").End(xlDown).Offset(1, 0).Select
End If
End If
End Sub
=> Identificare il tipo di dati contenuto nelle celle
Codice:
Public Sub IdentificaCel()
    Dim RigheT As Long, conT As Long
    conT = 1
    Range("A1").Select
    Selection.End(xlDown).Select
    RigheT = Cells(Rows.count, 1).End(xlUp).Row + 1
    While RigheT > conT
        If Left(Cells(conT, 1).Formula, 1) = "=" Then
            Cells(conT, 2).Value = "Formula: " & Cells(conT, 1).Formula
        Else
            If IsNumeric(Cells(conT, 1)) Then
                Cells(conT, 2).Value = "Numerico"
            Else
                Cells(conT, 2).Value = "Testo"
            End If
        End If
        conT = conT + 1
    Wend
End Sub
=> Aggiunge del testo in una cella in cui è presente altro testo
Nota: Aggiunge il testo presente in una cella alle celle dell’intervallo
Codice:
 Sub Testo()
Dim cel1 As String, cel2 As String, cel As Range, testo1 As String
Range("A1:A10").Select
testo1 = Range("B4").Value
Application.ScreenUpdating = False
cel1 = ActiveCell.Address
cel2 = ActiveCell.End(xlDown).Address
Range(cel1 & ":" & cel2).Select
For Each cel In Selection
cel.Value = cel.Value & " " & testo1
Next cel
Range(cel1).Select
End Sub
=> Selezionare un intervallo
Nota: Inserire nella finestrella di Input l’intervallo da selezionare, digita ad esempio C3:E10 oppure A1:C10,J9:J12

Codice:
Sub Selezionare()
Dim tit As String, Mess As String, cont As Variant
tit = "Forum di VBA per Excel"
Mess = "Digita l'intervallo di celle"
cont = Application.InputBox(Mess, tit)
Range(cont).Select
End Sub
=> Funzione somma in un range
Codice:
Sub Somma()
Set zona = Range([B3], [B3].End(xlDown))
[B3].End(xlDown).Select
ActiveCell.Offset(1, -1) = "Totale"
ActiveCell.Offset(1, 0) = WorksheetFunction.Sum(zona)
End Sub
=> Eseguire una macro quando la cella A10 è selezionata
Codice:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$10" Then pippo
End Sub
=> Allineamento contenuto delle celle
Codice:
ActiveCell.HorizontalAlignment = xlRight ' a destra
ActiveCell.HorizontalAlignment = xlLeft ' a sinistra
ActiveCell.HorizontalAlignment = xlCenter ' al centro
=> Inserire una formula nella cella
Note: Se viene usata la proprietà Formula, la formula deve esser in inglese, se invece si usa la
proprietà FormulaLocal, la formula deve essere nella lingua del vostro Excel. Autore : Tiziano Marmiroli
Codice:
Worksheets("Foglio1").Range("C3").Formula=("=SUM(A1:A10)")
'oppure
Worksheets("Foglio2").Range("C3").FormulaLocal=("=SOMMA(A1:A10)")
=> Far lampeggiare una cella
Codice:
Sub Lampeggiacella()
Const testo1 As String = "Lampeggio"
Dim i As Integer
For i = 1 To 10
Cells(1, 1) = testo1
Call Lamp_cell
Next i
End Sub

Private Sub Lamp_cell()
Dim n As Byte, Start As Variant
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 100
Loop
If n Mod 5 = 0 Then Cells(1, 1) = ""
Next n
End Sub
=> Sapere se le celle di una zona sono vuote
Codice:
Sub vuote1()
With [A1:A10]
n = Application.CountBlank(.Cells)
If .Cells.count = n Then
MsgBox "La cella e vuota"
ElseIf n = 0 Then
MsgBox "Le Celle sono piene"
Else
MsgBox "Solo alcune celle sono vuote"
End If
End With
End Sub
=> Trasformare la prima lettera in maiuscolo
Nota : Metodo per convertire la prima lettera di una frase in maiuscolo
Codice:
Sub Test1()
MsgBox Frase("benvenuto, al corso VBA")
End Sub

Public Function Frase(Stc As String)
Frase = UCase(Left(Stc, 1)) & Right(Stc, Len(Stc) - 1)
End Function
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato