Как да създаваме променливи (Variables) ?

Безплатни 20 урока
регистрирай се и научи

Ако сте вече потребител - Регистриран съм
Видео

Тест за преминаване към следващия урок

 
Променливата се създава САМО след  процедурата и след като се присвои стойност
Твърдението НЕ е вярно
Твърдението е вярно
 
Променливата се декларира с оператор :
Dim
For
While

Въпроси и отговори

  • Димитринка Вълкова:

    Здравейте Валентина, Нека най-напред да уточня дали съм разбрала правилно логиката на програмата. Програмата трябва да изтрие съдържанието на даден диапазон (обект Range). За тази цел с променливата last_row определяте последния ред. След това за всяка клетка (rng) изтривате съдържанието. Според мен е излишно да се избира клетката (Select), а след това да се изтрива. Достатъчно е обектът да се дефинира правилно и след това да се зададе команда (method). Блок-операторът With ... End With също не е необходимо да се повтаря.

    Ето моето предложение:

    Sub Delete_Content_New()

    Dim sht As Worksheet Dim rng As Range Dim last_row As Long Dim i, j

    For Each sht In ActiveWorkbook.Worksheets sht.Activate

    i = 2 j = 4

    last_row = Range("A1048576").End(xlUp).Row

    For Each rng In Range(Cells(i, j), Cells(last_row, j)).Cells rng.ClearContents rng.Offset(0, 2).ClearContents

    Next rng

    End Sub

    Надявам се, да свърши работа. Ако имате още въпроси, пишете ми.

    Валентина Слабакова:

    Здравейте и благодаря за отговора, имам два въпроса, защо обявяваме втори път sht тук: For Each sht In ActiveWorkbook.Worksheets SHT.Activate И защо използваме два пъти Clear Content тук: For Each rng In Range(Cells(i, j), Cells(last_row, j)).Cells rng.CLEARCONTENTS rng.Offset(0, 2).ClearContents? Благодаря предварително!

    Димитринка Вълкова:

    При копиране инструкциите се разместват, а аз не съм обърнала внимание. Ето каква е последователността:

    Sub Delete_Content_New()

    Dim sht As Worksheet

    Dim rng As Range

    Dim last_row As Long

    Dim i, j

    For Each sht In ActiveWorkbook.Worksheets

    sht.Activate '==> всеки лист от колекцията Worksheets трябва да се активира

    i = 2

    j = 4

    last_row = Range("A1048576").End(xlUp).Row

    For Each rng In Range(Cells(i, j), Cells(last_row, j)).Cells

    rng.ClearContents

    rng.Offset(0, 2).ClearContents '==> изтрива съдържанието за още една клетка !!!

    Next rng

    End Sub

    Надявам се сега вече да е по-ясно! Но ако имате въпроси пишете!

    Валентина Слабакова:

    Здравейте и благодаря, имам още един въпрос, защо отново използваме командата CELLS с главни букви? For Each rng In Range(Cells(i, j), Cells(last_row, j)).CELLS Благодаря предварително!

    Валентина Слабакова:

    Имам още един въпрос, как мога да направя макро да тествам vlookup от друг файл с ежедневно променящо се име?

    Димитринка Вълкова:

    Обект Range дефинира диапазон, а диапазонът се дефинира с 2 две клетки. Например: Range("A1:B10"). Във VBA може да дефинирате диапазон като се включи и обект CELLS, например: Range(Cells(1,1), Cells(10,2). Във макроса Range(Cells(i,j), Cells(last_row,j)). След точката CELLS определя колекцията (Collection), която се съдържа в дефинирания вече обект Range, защото обект Range има и други колекции ROWS, COLUMNS и т.н. Прегледайте още веднъж урок 7 от модул 3.