ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Macro Question revisited (https://www.excelbanter.com/excel-programming/406214-macro-question-revisited.html)

Rodney Crow[_2_]

Macro Question revisited
 
I have a macro that works if I hard code the cell number into instead of
using the "t" variable as suggested below. If I use the t variable though,
nothing happens. I have put the first part of the code into the spreadsheet
code as suggested, and the macro "Conversion" into a module called
"ConversionModule". When I try to run the macro now though, nothing shows in
the selection box....what am I doing wrong here?????



It will not matter if F6 ( or any of F6 thru F65536) is changed thru direct
typing or via a data validation dropdown.


In the worksheet code area:


Private Sub Worksheet_Change(ByVal Target As Range)
Set r = Range("F6:F65536")
Set t = Target
If Intersect(t, r) Is Nothing Then Exit Sub
Application.EnableEvents = False
Call Conversion(t)
Application.EnableEvents = True
End Sub


and in a standard module:


Sub Conversion(t)
Roww = t.Row
If Cells(Roww, "F").Value = " " Then

Cells(Roww, "H").Value = "0.00 "
End If
End Sub


Note that we give Conversion a range. It gets the row number and puts it in
the variable Roww.

--
Gary''s Student - gsnu200769



"Rodney Crow" wrote:

Okay, maybe I'm not explaining enough about the macro. The macro
(Conversion) is activated when a dropdown box is clicked. Based upon that
choice, "Conversion" converts the choice for comparison (in this case, cost
per ounce). My code in "Conversion" uses If/Then/ElseIf statements based on
the cell that is clicked. For example:

If Cells(Row, "F").Value = " " Then
Cells(Row, "H").Value = "0.00 "
ElseIf Cells(Row, "F").Value = "BAG" Then
myVar = Val(InputBox("What is the size of the bag in pounds?", "Ounces"))
Cells(Row, "H").Value = Cells(Row, "G").Value / (myVar * 16)

and so on and so forth.

So what I need to do, is when say cell "f6" is clicked, it sends the row
value to my macro as the declared integer "Row" so that it will work for
every cell. I know there are probably many reading this that are rolling
their eyes at my brainlessness, but as I said, this is my first trial with
VBA.

Thank you all in advance for your help and suggestions.



FSt1

Macro Question revisited
 
hi
i'm suspicious of this line in conversion(t).....
If Cells(Roww, "F").Value = " " Then
the code is looking for a space in Cell(Roww,"F") and if it doesn't find a
space then it skips updating H.
sooo.....
try changing that to...
If Cells(Roww, "F").Value = ""
no space between the double quotes.

Regards
FSt1

"Rodney Crow" wrote:

I have a macro that works if I hard code the cell number into instead of
using the "t" variable as suggested below. If I use the t variable though,
nothing happens. I have put the first part of the code into the spreadsheet
code as suggested, and the macro "Conversion" into a module called
"ConversionModule". When I try to run the macro now though, nothing shows in
the selection box....what am I doing wrong here?????



It will not matter if F6 ( or any of F6 thru F65536) is changed thru direct
typing or via a data validation dropdown.


In the worksheet code area:


Private Sub Worksheet_Change(ByVal Target As Range)
Set r = Range("F6:F65536")
Set t = Target
If Intersect(t, r) Is Nothing Then Exit Sub
Application.EnableEvents = False
Call Conversion(t)
Application.EnableEvents = True
End Sub


and in a standard module:


Sub Conversion(t)
Roww = t.Row
If Cells(Roww, "F").Value = " " Then

Cells(Roww, "H").Value = "0.00 "
End If
End Sub


Note that we give Conversion a range. It gets the row number and puts it in
the variable Roww.

--
Gary''s Student - gsnu200769



"Rodney Crow" wrote:

Okay, maybe I'm not explaining enough about the macro. The macro
(Conversion) is activated when a dropdown box is clicked. Based upon that
choice, "Conversion" converts the choice for comparison (in this case, cost
per ounce). My code in "Conversion" uses If/Then/ElseIf statements based on
the cell that is clicked. For example:

If Cells(Row, "F").Value = " " Then
Cells(Row, "H").Value = "0.00 "
ElseIf Cells(Row, "F").Value = "BAG" Then
myVar = Val(InputBox("What is the size of the bag in pounds?", "Ounces"))
Cells(Row, "H").Value = Cells(Row, "G").Value / (myVar * 16)

and so on and so forth.

So what I need to do, is when say cell "f6" is clicked, it sends the row
value to my macro as the declared integer "Row" so that it will work for
every cell. I know there are probably many reading this that are rolling
their eyes at my brainlessness, but as I said, this is my first trial with
VBA.

Thank you all in advance for your help and suggestions.



joel

Macro Question revisited
 
I don't know why the code is so complicated

Private Sub Worksheet_Change(ByVal Target As Range)
if target.column = 6 then
if Target = "" then
target = 0.0
end if
end if
end sub


"Rodney Crow" wrote:

I have a macro that works if I hard code the cell number into instead of
using the "t" variable as suggested below. If I use the t variable though,
nothing happens. I have put the first part of the code into the spreadsheet
code as suggested, and the macro "Conversion" into a module called
"ConversionModule". When I try to run the macro now though, nothing shows in
the selection box....what am I doing wrong here?????



It will not matter if F6 ( or any of F6 thru F65536) is changed thru direct
typing or via a data validation dropdown.


In the worksheet code area:


Private Sub Worksheet_Change(ByVal Target As Range)
Set r = Range("F6:F65536")
Set t = Target
If Intersect(t, r) Is Nothing Then Exit Sub
Application.EnableEvents = False
Call Conversion(t)
Application.EnableEvents = True
End Sub


and in a standard module:


Sub Conversion(t)
Roww = t.Row
If Cells(Roww, "F").Value = " " Then

Cells(Roww, "H").Value = "0.00 "
End If
End Sub


Note that we give Conversion a range. It gets the row number and puts it in
the variable Roww.

--
Gary''s Student - gsnu200769



"Rodney Crow" wrote:

Okay, maybe I'm not explaining enough about the macro. The macro
(Conversion) is activated when a dropdown box is clicked. Based upon that
choice, "Conversion" converts the choice for comparison (in this case, cost
per ounce). My code in "Conversion" uses If/Then/ElseIf statements based on
the cell that is clicked. For example:

If Cells(Row, "F").Value = " " Then
Cells(Row, "H").Value = "0.00 "
ElseIf Cells(Row, "F").Value = "BAG" Then
myVar = Val(InputBox("What is the size of the bag in pounds?", "Ounces"))
Cells(Row, "H").Value = Cells(Row, "G").Value / (myVar * 16)

and so on and so forth.

So what I need to do, is when say cell "f6" is clicked, it sends the row
value to my macro as the declared integer "Row" so that it will work for
every cell. I know there are probably many reading this that are rolling
their eyes at my brainlessness, but as I said, this is my first trial with
VBA.

Thank you all in advance for your help and suggestions.



joel

Macro Question revisited
 
If you are copying and pasting more than one cell you need to cycle through
all the target cells

Private Sub Worksheet_Change(ByVal Target As Range)
for each cell in target
if cell.column = 6 then
if cell = "" then
cell = 0.0
end if
end if
next cell
end sub

"Joel" wrote:

I don't know why the code is so complicated

Private Sub Worksheet_Change(ByVal Target As Range)
if target.column = 6 then
if Target = "" then
target = 0.0
end if
end if
end sub


"Rodney Crow" wrote:

I have a macro that works if I hard code the cell number into instead of
using the "t" variable as suggested below. If I use the t variable though,
nothing happens. I have put the first part of the code into the spreadsheet
code as suggested, and the macro "Conversion" into a module called
"ConversionModule". When I try to run the macro now though, nothing shows in
the selection box....what am I doing wrong here?????



It will not matter if F6 ( or any of F6 thru F65536) is changed thru direct
typing or via a data validation dropdown.


In the worksheet code area:


Private Sub Worksheet_Change(ByVal Target As Range)
Set r = Range("F6:F65536")
Set t = Target
If Intersect(t, r) Is Nothing Then Exit Sub
Application.EnableEvents = False
Call Conversion(t)
Application.EnableEvents = True
End Sub


and in a standard module:


Sub Conversion(t)
Roww = t.Row
If Cells(Roww, "F").Value = " " Then

Cells(Roww, "H").Value = "0.00 "
End If
End Sub


Note that we give Conversion a range. It gets the row number and puts it in
the variable Roww.

--
Gary''s Student - gsnu200769



"Rodney Crow" wrote:

Okay, maybe I'm not explaining enough about the macro. The macro
(Conversion) is activated when a dropdown box is clicked. Based upon that
choice, "Conversion" converts the choice for comparison (in this case, cost
per ounce). My code in "Conversion" uses If/Then/ElseIf statements based on
the cell that is clicked. For example:

If Cells(Row, "F").Value = " " Then
Cells(Row, "H").Value = "0.00 "
ElseIf Cells(Row, "F").Value = "BAG" Then
myVar = Val(InputBox("What is the size of the bag in pounds?", "Ounces"))
Cells(Row, "H").Value = Cells(Row, "G").Value / (myVar * 16)

and so on and so forth.

So what I need to do, is when say cell "f6" is clicked, it sends the row
value to my macro as the declared integer "Row" so that it will work for
every cell. I know there are probably many reading this that are rolling
their eyes at my brainlessness, but as I said, this is my first trial with
VBA.

Thank you all in advance for your help and suggestions.



Rodney Crow[_2_]

Macro Question revisited
 
The macro actually has more than just that one calculation. It contains
If/ElseIf statements that do a conversion based on a dropdown box of choices.
The first one looks for a blank (signifying no choice has been made). There
are then about 9 other choices the user can make, but I didnt not post them
all here in order to keep the post a bit shorter.

"Joel" wrote:

If you are copying and pasting more than one cell you need to cycle through
all the target cells

Private Sub Worksheet_Change(ByVal Target As Range)
for each cell in target
if cell.column = 6 then
if cell = "" then
cell = 0.0
end if
end if
next cell
end sub

"Joel" wrote:

I don't know why the code is so complicated

Private Sub Worksheet_Change(ByVal Target As Range)
if target.column = 6 then
if Target = "" then
target = 0.0
end if
end if
end sub


"Rodney Crow" wrote:

I have a macro that works if I hard code the cell number into instead of
using the "t" variable as suggested below. If I use the t variable though,
nothing happens. I have put the first part of the code into the spreadsheet
code as suggested, and the macro "Conversion" into a module called
"ConversionModule". When I try to run the macro now though, nothing shows in
the selection box....what am I doing wrong here?????



It will not matter if F6 ( or any of F6 thru F65536) is changed thru direct
typing or via a data validation dropdown.

In the worksheet code area:

Private Sub Worksheet_Change(ByVal Target As Range)
Set r = Range("F6:F65536")
Set t = Target
If Intersect(t, r) Is Nothing Then Exit Sub
Application.EnableEvents = False
Call Conversion(t)
Application.EnableEvents = True
End Sub

and in a standard module:

Sub Conversion(t)
Roww = t.Row
If Cells(Roww, "F").Value = " " Then
Cells(Roww, "H").Value = "0.00 "
End If
End Sub

Note that we give Conversion a range. It gets the row number and puts it in
the variable Roww.
--
Gary''s Student - gsnu200769


"Rodney Crow" wrote:

Okay, maybe I'm not explaining enough about the macro. The macro
(Conversion) is activated when a dropdown box is clicked. Based upon that
choice, "Conversion" converts the choice for comparison (in this case, cost
per ounce). My code in "Conversion" uses If/Then/ElseIf statements based on
the cell that is clicked. For example:

If Cells(Row, "F").Value = " " Then
Cells(Row, "H").Value = "0.00 "
ElseIf Cells(Row, "F").Value = "BAG" Then
myVar = Val(InputBox("What is the size of the bag in pounds?", "Ounces"))
Cells(Row, "H").Value = Cells(Row, "G").Value / (myVar * 16)

and so on and so forth.

So what I need to do, is when say cell "f6" is clicked, it sends the row
value to my macro as the declared integer "Row" so that it will work for
every cell. I know there are probably many reading this that are rolling
their eyes at my brainlessness, but as I said, this is my first trial with
VBA.

Thank you all in advance for your help and suggestions.



All times are GMT +1. The time now is 06:16 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com