Страницы: 1
RSS
Вывод необходимых данных с помощью MsgBox
 
Подскажите плз еще одну вещь, существует ли возможность вывести необходимые данные из таблицы с  помощью MsgBox, суть в том что количество данных в таблице увеличивается и необходимо указывать нижнее крайнее левое значение (оно текстовое) из таблицы.
 
Давайте Ваш файл - поможем. Только не забудьте заглянуть в Правила :-)
 
{quote}{login=The_Prist}{date=07.11.2009 10:10}{thema=Re: Вывод необходимых данных с помощью MsgBox}{post}{quote}{login=vfridrih}{date=07.11.2009 09:53}{thema=Вывод необходимых данных с помощью MsgBox}{post}необходимо указывать нижнее крайнее левое значение (оно текстовое) из таблицы.{/post}{/quote}Знать бы где у Вас край нижний левый...  
msgbox Cells(cells(rows.count,1).end(xlup).row,1).value,vbinformation,"Вывод значений"  
Послденее значение столбца А{/post}{/quote}  
простите меня за глупый вопрос, но не могли бы вы мне указать где в написанном Вами тексте ссылка на последнее значение в столбце А? Блин, туго мне все это дается, я попытался указать значение в столбце А, но у меня все время пустое поле выходит :(
 
Вот так попробуйте:  
Sub Макрос1()  
Dim LastRow As Long  
LastRow = Cells(Rows.Count, 1).End(xlUp).Row  
MsgBox Cells(LastRow, 1), 64, "Информация"  
End Sub
 
{quote}{login=The_Prist}{date=07.11.2009 10:22}{thema=Re: Re: Re: Вывод необходимых данных с помощью MsgBox}{post}{quote}{login=vfridrih}{date=07.11.2009 10:18}{thema=Re: Re: Вывод необходимых данных с помощью MsgBox}{post}не могли бы вы мне указать где в написанном Вами тексте ссылка на последнее значение в столбце А?({/post}{/quote}1{/post}{/quote}  
Подскажите пожалуйста еще один вопрос, как я понимаю MsgBox отражает любое значение (даже в том случае если это формула) а у меня в столбце А до конца протянута формула, и данные в ячейках отражаются по мере заполнения других (от которых результат в А зависит) выходит у меня в MsgBox отражается пустое последнее значение (из-за того что там указана формула), если я меняю на число оно отражается, а если формула - то нет, а можно чтобы отражалось только то, что видно на самом листе, т.е. не формула а результат в том случае если он присутствует? надеюсь понятно написал.    
К сожалению, не могу прицеплять файлы (политика безопасности не позволяет) но если написать в виде текста получается:  
А (столбец)  
=ЕСЛИ(ЕПУСТО(C18);"";СЦЕПИТЬ(F18;"/";B18)) дальше по ячейкам  
=ЕСЛИ(ЕПУСТО(C19);"";СЦЕПИТЬ(F19;"/";B19)) и т.д. так вот пока в ячейках C19, F19 и B19 нет значений то на экране отражается пустое значение, и видимо MsgBox отражает именно это пустое значение.
 
Зайдите по ссылке. Как раз тема определения последней ячейки диапазона:)  
http://www.planetaexcel.ru/forum.php?thread_id=8203  
Там можно будет взять или решение от Pavel55 или от ZVI. Что Вам покажется удобнее.
 
А можно еще использовать функции СЧЕТ() для чисел и СЧЕТЗ() для текста.  
В данном примере (тафтология) данные начинались с 4 строки, поэтому +3  
 
Function poslednStroka(UsRange As Range) As Long  
'Попробуйте так  
Dim iRowFunction As Long  
Dim Proverka As Boolean  
 
 
   Proverka = WorksheetFunction.IsText(UsRange.Cells(1, 1)) 'True если значение в первой ячейке диапазона текстовое  
 
       If Proverka Then  
             
           iRowFunction = WorksheetFunction.CountIf(UsRange, "*?*") + 3 'если истина считаем текстовые строки  
         
       Else: iRowFunction = WorksheetFunction.Count(UsRange) + 3 'если Proverka=ЛОЖЬ считаем строки с числами  
         
       End If  
 
   poslednStroka = iRowFunction  
     
End Function  
 
 
Sub testFuction()  
Dim iR As Long  
 
iR = poslednStroka(Worksheets("Лист1").Range("C4:C500"))  
 
MsgBox iR  
 
End Sub
 
{quote}{login=Igor67}{date=08.11.2009 02:12}{thema=}{post}А можно еще использовать функции СЧЕТ() для чисел и СЧЕТЗ() для текста.  
В данном примере (тафтология) данные начинались с 4 строки, поэтому +3  
 
Function poslednStroka(UsRange As Range) As Long  
End Sub{/post}{/quote}  
 
 
Я теперь совсем запутался :(((  
у меня все выглядит так:  
   Dim LastRow As Long  
   LastRow = Cells(Rows.Count, 1).End(xlUp).Row  
   MsgBox Cells(LastRow, 1), 64, "Номер:"  
   Sheets("ввод данных").Select  
End Sub  
 
как я понимаю мне необходимо просто найти как правильно написать необходимую функцию для запроса необходимых данных, т.е чему будет LastRow =  
или я ошибаюсь.    
Перечитал все посты, но так необходимого значения не нашел, или я просто не понимаю, если у меня результат вычисления функции в ячейке ="" то  MsgBox у меня выдет "" а мне нужно чтобы он выдавал последний номер, номер который отражается в ячейке 1 столбца, а не ""
 
Пример в файле.
 
{quote}{login=Igor67}{date=08.11.2009 04:18}{thema=}{post}Пример в файле.{/post}{/quote}  
Видимо я не так объясняю, я кажется понял что меня не поняли. :)  
Если посмотреть в Ваш файл у вас кнопкой отражается номер строки, я бьюсь над тем чтобы MsgBox отразил у меня данные (в Вашем примере это должно быть "24/февраль")  
(последняя запись первого столбца,  которая отражается на экране)  
 
PS сложно кода нет возможности выслать пример... :(
 
Вставьте  
 
MsgBox "Номер:" & Range("A" & iR).Text, 64, "Номер:"  
 
iR - определяет номер строки  
Range("A" & iR).Text - вносит содержимое ячейки:)
 
А кто запрещает набросать пример? Не нужны нам Ваши секретные данные. Любые нарисуйте, только сохраните структуру. Иначе ещё долго будет гадать ЧТО и ГДЕ у Вас!!!
 
{quote}{login=Юрий М}{date=08.11.2009 04:45}{thema=}{post}А кто запрещает набросать пример? Не нужны нам Ваши секретные данные. Любые нарисуйте, только сохраните структуру. Иначе ещё долго будет гадать ЧТО и ГДЕ у Вас!!!{/post}{/quote}  
Дык в том то и дел, что я формирую файл для отчета, для кучи народа, у каждого свои фантики в голове, чтобы могли увидеть что у них получилось хочу для удобства вывести MsgBox (чтобы каждый мог увидеть итог своих стараний), данных в файле пока никаких нет :) поэтому про какие секретные данные может идти речь :) проблема в том что я файл никак не могу прицепить, т.к. сам проводник выдает сразу уведомление, что мол ограничено политикой :( поэтому приходится писать на пальцах :(. Простите если что не так.
 
{quote}{login=Igor67}{date=08.11.2009 04:45}{thema=}{post}Вставьте  
 
MsgBox "Номер:" & Range("A" & iR).Text, 64, "Номер:"  
 
iR - определяет номер строки  
Range("A" & iR).Text - вносит содержимое ячейки:){/post}{/quote}  
 
Игорь, подскажите пожалуйста у меня на Вашем примере, все получается как надо, если только вставляю все в свое ничего не выходит, где ошибка?  
Dim iR As Long, iRng As Range  
   Dim LastRow As Long  
   LastRow = Cells(Rows.Count, 1).End(xlUp).Row  
   Set iRng = Range("A" & Cells(1, 1).End(xlDown).Row & ":A" & Cells(Rows.Count, 1).End(xlUp).Row)  
   iR = poslednStroka(iRng) + Cells(1, 1).End(xlDown).Row - 1  
   MsgBox Range("A" & iR).Text, 64, "Íîìåð:"  
   Sheets("номер:").Select  
End Sub
 
Ошибки нет, просто вероятно Вы пытаетесь отобразить данные с какого то листа, а макрос работает только по активному:)  
ЗЫ у Вас задача меняется как погода осенью. Не понимаю что Вы хотите в итоге получить.
 
{quote}{login=Igor67}{date=08.11.2009 06:05}{thema=}{post}Ошибки нет, просто вероятно Вы пытаетесь отобразить данные с какого то листа, а макрос работает только по активному:)  
ЗЫ у Вас задача меняется как погода осенью. Не понимаю что Вы хотите в итоге получить.{/post}{/quote}  
:) почему? вроде бьюсь над одним и тем же уже вторые сутки :)  
У меня тут ошибка была не правильно написал :)  
MsgBox Range("A" & iR).Text, 64, "Номер:"  
Sheets("Ввод данных").Select  
End Sub
 
Выложите свой файл пример. Коммерческие секреты не нужны. Только структура и данные замените на фрукты/овощи... Можно не с двумя сотнями листов, а только 3:))
 
{quote}{login=Igor67}{date=08.11.2009 06:22}{thema=}{post}Выложите свой файл пример. Коммерческие секреты не нужны. Только структура и данные замените на фрукты/овощи... Можно не с двумя сотнями листов, а только 3:)){/post}{/quote} ок. отправляю! Куча потраченных нервов только чтобы файл экселя сбросить на флэшку, вот то что у меня есть, после нажатия кнопки на проверку выходит пустое значение в мессадже, что делаю не так? посмотрите? (притормозил защиту листа, достало каждый раз снимать :))<STRONG><BR>Файл удален</STRONG> - велик размер. [Модераторы]
 
vfridrih, вынужден был удалить Ваш файл - загляните в Правила.
 
{quote}{login=Юрий М}{date=08.11.2009 10:16}{thema=}{post}vfridrih, вынужден был удалить Ваш файл - загляните в Правила.{/post}{/quote}  
да конечно, простите! Я просто так увлекся решением проблемы что обо всем забыл :)  
Больше так не буду :)
 
В Вашем файле требуется отобразить в MsgBox значение ячейки А9 листа "Исходящие"?
 
{quote}{login=Юрий М}{date=08.11.2009 10:46}{thema=}{post}В Вашем файле требуется отобразить в MsgBox значение ячейки А9 листа "Исходящие"?{/post}{/quote}  
ну по сути, да, только каждый раз записи добавляются, как только каждый пользователь вводит новое значение, он должен иметь возможность еще раз проверить сумму и номер его записи, т.е. мне необходимо, чтобы в в MsgBox отражалось последнее отображаемое значение ячейки из столбца А листа "Исходящие".
 
Сразу оговорюсь - решение не самое эффективное, но в Вашем случае сработает. Скопируйте нижеприведённый код, затем правый клик по ярлычку листа "Исходящие", - Исходный текст, Вставляем скопированное. Запускаем.  
Sub Макрос1()  
Dim LastRow As Long  
LastRow = Cells(Rows.Count, 1).End(xlUp).Row  
  For i = 3 To LastRow  
     If Cells(i, 1) <> "" Then  
        LastRow = i  
     Else  
        Exit For  
     End If  
  Next  
  MsgBox "Значение в последней ячейке: " & Cells(LastRow, 1), 64, "Информация"  
End Sub
 
{quote}{login=Юрий М}{date=08.11.2009 11:01}{thema=}{post}Сразу оговорюсь - решение не самое эффективное, но в Вашем случае сработает. Скопируйте нижеприведённый код, затем правый клик по ярлычку листа "Исходящие", - Исходный текст, Вставляем скопированное. Запускаем.  
Sub Макрос1()  
Dim LastRow As Long  
LastRow = Cells(Rows.Count, 1).End(xlUp).Row  
  For i = 3 To LastRow  
     If Cells(i, 1) <> "" Then  
        LastRow = i  
     Else  
        Exit For  
     End If  
  Next  
  MsgBox "Значение в последней ячейке: " & Cells(LastRow, 1), 64, "Информация"  
End Sub{/post}{/quote}  
 
Да так работает, но только я пытался чтобы указанные данные появлялись при нажатии кнопки "Ввести данные", т.е. получается я зря старался? Так не получится? :(. Лист исходящие будет защищаться, пользователям специально на него можно не заходить, я хотел чтобы сразу после ввода данных появлялся MsgBox и каждый мог записать свой номер (и при необходимости свериться с суммой, мало ли ошибка)
 
Простите за мои глупости но кажется все получилось я все правильно сделал?  
Неужели... :))
 
Заменить целиком Макрос1 вот на такой:  
Sub Макрос1()  
Application.ScreenUpdating = False  
   Sheets("Исходящие").Select  
   ActiveSheet.Unprotect "123"  
   Sheets("ввод данных").Select  
   Range("D3:K3").Select  
   Selection.Copy  
   Sheets("Исходящие").Select  
   Range("C1").Select  
   Selection.End(xlDown).Select  
   ActiveCell.Offset(1, 0).Select  
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
       :=False, Transpose:=False  
   Range("A1").Select  
   Sheets("ввод данных").Select  
   Application.CutCopyMode = False  
   Range("A1").Select  
   'ActiveSheet.Protect "123"  
   ActiveSheet.EnableSelection = xlNoSelection  
  Dim LastRow As Long  
   With Sheets("Исходящие")  
     LastRow = .Cells(Rows.Count, 1).End(xlUp).Row  
     For i = 3 To LastRow  
        If .Cells(i, 1) <> "" Then  
           LastRow = i  
        Else  
           Exit For  
     End If  
     Next  
MsgBox "Значение в последней ячейке: " & .Cells(LastRow, 1), 64, "Информация"  
   End With  
Application.ScreenUpdating = True  
End Sub
 
{quote}{login=Юрий М}{date=08.11.2009 11:26}{thema=}{post}Заменить целиком Макрос1 вот на такой:  
Sub Макрос1()  
End Sub{/post}{/quote}  
 
Простите, может я не в тему здесь напишу, но это просто СУПЕР! Огромнейшее Вам спасибо! Я над этим бился 2 дня!
Страницы: 1
Читают тему
Наверх