2013-08-23 3 views
0

У меня в настоящее время есть рабочий лист, в котором у меня много людей, заполняющих каждый день. Есть 4 колонки, которые заполняют пользователи из: С, Е, Н, & J (все числовые значения, одна строка в день месяца.)Excel Mac VBA Loop Through Cells и сбросить некоторые значения

Пользователям заполнить C, E, & Н каждый день независимо от того, что, но много дней нет значения для ввода столбца J. Мне нужно, чтобы значение в J было установлено равным 0, если пользователь ничего не вводит. Конечно, было бы проще просто ввести пользователей в 0, но я работаю со сложной группой людей здесь.

В любом случае, я хочу использовать макрос, который запускается автоматически, когда пользователь нажимает кнопку сохранения (прежде чем он действительно сохраняет, конечно), и попросите его сделать следующее: (Я больше знаком с php, м просто печатаю это, как я знаком - я уверен, что мой синтаксис неверен)

Foreach Row 
    If "column A" != "" { 
    If "column J" != "" { 
    //Everything is good, continue on... 
    } else { 
    CurrentRow.ColumnJ.value == 0 
    }//Value has been set - continue loop 
    } 
    //column A is blank, this day hasn't come yet - quit looping here 
End Foreach 

Если кто-то может помочь мне с этим я был бы благодарен. С некоторых исследований, это то, что я придумал до сих пор, и теперь я застрял ...

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Dim curCell As Range 
'Labor Flow Sheet'.Select 

For Each curCell in Range(????) 
    If curCell.Value = "" Then 
    ??????? 
    End If 
Next curCell 
End Sub 

Заранее спасибо!

+0

Откуда вы знаете, что они ничего не ввели? Есть ли что-то в столбце A или B, которое указывает дату или текущую строку? Кстати, мы все работаем со сложными группами людей. :-) –

+0

LOL Рад, что я не один. COL B - доллары продаж MTD, COL A рассчитывает доллары Daily Sales, вычитая вчерашние доллары продаж из сегодняшней MTD. У меня есть оператор IF в столбце A, который присваивает значение «» (ничего), если пользователь ничего не ввел в COL B, иначе он вычисляет ежедневные продажи. На самом деле я мог бы уйти от одной из этих столбцов. Мне просто нужно проверить, является ли значение ячейки NULL или EMPTY или что-то вроде правильного слова для «» в мире Excel. –

ответ

1

Смотрите эту link найти правильный выбор, а также для знаков вопроса внутри заявление, если вы хотели бы поставить

curCell.Value = 0 
0

Для знаков вопроса в своем заявлении

For Each curCell in Range(????) 

Решение 1:
Чтобы найти полный диапазон, с которым вы работаете, вам нужно будет использовать столбец, который заполняется каждый день. Вы упомянули, что колонны C, E и H были заполнены каждый день. Используя один из этих столбцов (возьмем C для примера здесь), вы можете найти диапазон, используя метод .end. Это гаснет либо вверх, либо влево или вправо от диапазона, пока он не найдет никаких данных. Так,

Range("J1", Range("C1").End(xlDown)).Select 

подберет все клетки J1 (или любой другой столбец является последним в листе) к самым нижней ячейке, содержащие данным в колонке C, автоматически.

Решение 2:
Вручную ввести в диапазон. Например, чтобы выбрать A1-J300:

Range("A1", "J300").Select 
+0

ЛЮБИТЕ ЭТО! Большое спасибо за то, что помогли мне выбрать правильный диапазон автоматически! Любой ввод о том, как проверить значения в столбце C, и при необходимости поставить 0 в столбце J? –

+0

Если вам понравилось, пожалуйста, проголосуйте! Я думаю, что код, который вы впервые разместили, теперь будет отлично работать с некоторыми небольшими трюками - я постараюсь опубликовать его позже. –

+0

Я пытался проголосовать, но, видимо, я слишком новый, LOL.Я сделаю это, как только у меня будет достаточно очков. Моя проблема с циклами и инструкциями If является синтаксисом, у меня есть концепция. Если у вас есть время, я ценю это! –

Смежные вопросы