T
timspier
I am writing a macro which loads in a picture and makes a "cross"
wherever the user clicks on the picture. I don't know how many times
they will click, so I use the following code to make 2 labels, 1
vertical and 1 horizontal, which intersect in the middle to make a
cross.
HorHold = HorHold + 1
Set Lbl = Controls.Add("Forms.Label.1", "lblLabel" & HorHold,
True)
With Lbl
..Top = Y
..Left = X - 6
..Height = 1
..Width = 12
..BorderStyle = 1
..BorderColor = vbRed
End With
'for the second part of the "X", we need to give it a unique name
'so we use VertHold which starts at 900 and won't intersect
HorHold
VertHold = VertHold + 1
Set Lbl = Controls.Add("Forms.Label.1", "lblLabel" & VertHold,
True)
With Lbl
..Top = Y - 6
..Left = X
..Height = 12
..Width = 1
..BorderStyle = 1
..BorderColor = vbRed
End With
This works great. I also want to be able to undo any mistakes. I put an
"Undo" button on the userform with the following code:
'now we have to clear off the red X
Controls("lblLabel" & HorHold).Visible = False
Controls("lblLabel" & VertHold).Visible = False
HorHold = HorHold - 1
VertHold = VertHold - 1
The idea is that each time they hit "Undo", they can "step back" over
all their marks and undo them.
Here is my problem: this works at first, but not later. That is, say I
click 4 times and the last 2 are mistakes. So, I hit "Undo" twice, and
each time the cross disappears just like it is supposed to. So, now I
have only 2 crosses on the image. Then, I click twice more to make two
more crosses. However, if I hit "undo" nothing happens! Then, I hit
"undo" again and nothing happens. However, when I hit it a third time,
mark #2 disappears! So, it seems to be stepping backwards like it
should, but it doesn't erase the first two NEW marks, but when I step
back far enough I can erase marks that have never been erased.
Sorry if this is confusing, it's a difficult thing to explain. Any
ideas?
wherever the user clicks on the picture. I don't know how many times
they will click, so I use the following code to make 2 labels, 1
vertical and 1 horizontal, which intersect in the middle to make a
cross.
HorHold = HorHold + 1
Set Lbl = Controls.Add("Forms.Label.1", "lblLabel" & HorHold,
True)
With Lbl
..Top = Y
..Left = X - 6
..Height = 1
..Width = 12
..BorderStyle = 1
..BorderColor = vbRed
End With
'for the second part of the "X", we need to give it a unique name
'so we use VertHold which starts at 900 and won't intersect
HorHold
VertHold = VertHold + 1
Set Lbl = Controls.Add("Forms.Label.1", "lblLabel" & VertHold,
True)
With Lbl
..Top = Y - 6
..Left = X
..Height = 12
..Width = 1
..BorderStyle = 1
..BorderColor = vbRed
End With
This works great. I also want to be able to undo any mistakes. I put an
"Undo" button on the userform with the following code:
'now we have to clear off the red X
Controls("lblLabel" & HorHold).Visible = False
Controls("lblLabel" & VertHold).Visible = False
HorHold = HorHold - 1
VertHold = VertHold - 1
The idea is that each time they hit "Undo", they can "step back" over
all their marks and undo them.
Here is my problem: this works at first, but not later. That is, say I
click 4 times and the last 2 are mistakes. So, I hit "Undo" twice, and
each time the cross disappears just like it is supposed to. So, now I
have only 2 crosses on the image. Then, I click twice more to make two
more crosses. However, if I hit "undo" nothing happens! Then, I hit
"undo" again and nothing happens. However, when I hit it a third time,
mark #2 disappears! So, it seems to be stepping backwards like it
should, but it doesn't erase the first two NEW marks, but when I step
back far enough I can erase marks that have never been erased.
Sorry if this is confusing, it's a difficult thing to explain. Any
ideas?