Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6063 / 13646 ツリー ←次へ | 前へ→

【47387】罫線の判断 JIN 07/3/9(金) 11:29 質問[未読]
【47394】Re:罫線の判断 たいやきの頭 07/3/9(金) 12:34 回答[未読]
【47396】Re:罫線の判断 JIN 07/3/9(金) 13:10 質問[未読]
【47398】Re:罫線の判断 たいやきの頭 07/3/9(金) 13:24 発言[未読]
【47399】Re:罫線の判断 ひげくま 07/3/9(金) 13:35 発言[未読]
【47401】Re:罫線の判断 たいやきの頭 07/3/9(金) 13:41 発言[未読]
【47402】Re:罫線の判断 JIN 07/3/9(金) 13:48 質問[未読]
【47403】Re:罫線の判断 たいやきの頭 07/3/9(金) 13:59 発言[未読]
【47405】Re:罫線の判断 JIN 07/3/9(金) 14:07 お礼[未読]
【47409】Re:罫線の判断 ひげくま 07/3/9(金) 14:19 発言[未読]
【47410】Re:罫線の判断 Kein 07/3/9(金) 14:21 発言[未読]
【47423】Re:罫線の判断 JIN 07/3/9(金) 15:53 お礼[未読]

【47387】罫線の判断
質問  JIN  - 07/3/9(金) 11:29 -

引用なし
パスワード
   たびたびお世話になります。
入力セルの位置を取得し、そのセルに下罫線がなければ
罫線追加のメッセージを出したいのですがよくわかりません。
下にVBAを記述しますのでご教示願いますでしょうか。
よろしくお願いします。

Dim KEISEN_BOTTOM As Long
Dim myRows As Long
   iLast = WorksheetFunction.CountA(Sheets("A").Columns(4))
   myRows = (iLast * 2 - 1) + 5

 
  KEISEN_BOTTOM = Cells(myRows, 4).Borders(xlEdgeBottom).LineStyle
If KEISEN_BOTTOM = 0 Then

   MsgBox "罫線を追加してください。", vbExclamation

   GoTo jump
 
Else
 UserForm3.Show
  End If

jump:
 
  End Sub

【47394】Re:罫線の判断
回答  たいやきの頭  - 07/3/9(金) 12:34 -

引用なし
パスワード
   If KEISEN_BOTTOM = xlLineStyleNone Then
でできるとおもいますよ。

【47396】Re:罫線の判断
質問  JIN  - 07/3/9(金) 13:10 -

引用なし
パスワード
   ▼たいやきの頭 さん:
>If KEISEN_BOTTOM = xlLineStyleNone Then
>でできるとおもいますよ。


大変申しわけありません。
上記を入力したところ、セルのしたに罫線がある場合も
ない場合もメッセージがでてしまいます。
罫線がある場合にはユーザーフォームを立ち上げたいのですが。
再度、ご教示願えますでしょうか。

【47398】Re:罫線の判断
発言  たいやきの頭  - 07/3/9(金) 13:24 -

引用なし
パスワード
   >上記を入力したところ、セルのしたに罫線がある場合も
>ない場合もメッセージがでてしまいます。
>罫線がある場合にはユーザーフォームを立ち上げたいのですが。
>再度、ご教示願えますでしょうか。
こちらで試したところできたのですが・・・。
Cellsで指定しているところは本当にあっているんですか?
だとしたら僕にはわかりません。

【47399】Re:罫線の判断
発言  ひげくま  - 07/3/9(金) 13:35 -

引用なし
パスワード
   こんにちは。

▼JIN さん:
>▼たいやきの頭 さん:
>>If KEISEN_BOTTOM = xlLineStyleNone Then
>>でできるとおもいますよ。
>
>大変申しわけありません。
>上記を入力したところ、セルのしたに罫線がある場合も
>ない場合もメッセージがでてしまいます。

セルの下に罫線が有るときと無いときで、KEISEN_BOTTOMの値がいくつになっているのかを確認してみてください。

【47401】Re:罫線の判断
発言  たいやきの頭  - 07/3/9(金) 13:41 -

引用なし
パスワード
   >セルの下に罫線が有るときと無いときで、KEISEN_BOTTOMの値がいくつになっているのかを確認してみてください。
0になってますねぇ〜!
じゃぁ別にあの式が問題だったわけじゃないんですね。
だとしたらやっぱりCellsですよね?

【47402】Re:罫線の判断
質問  JIN  - 07/3/9(金) 13:48 -

引用なし
パスワード
   ▼ひげくま さん:
>こんにちは。
>
>▼JIN さん:
>>▼たいやきの頭 さん:
>>>If KEISEN_BOTTOM = xlLineStyleNone Then
>>>でできるとおもいますよ。
>>
>>大変申しわけありません。
>>上記を入力したところ、セルのしたに罫線がある場合も
>>ない場合もメッセージがでてしまいます。
>
>セルの下に罫線が有るときと無いときで、KEISEN_BOTTOMの値がいくつになっているのかを確認してみてください。


KEISEN_BOTTOM = Cells(myRows, 4).Borders(xlEdgeBottom).LineStyle
 (値は-4142)   (316)        (9)
If KEISEN_BOTTOM = xlLineStyleNone Then
 (値は-4142)  (値は-4142)
でどちらも一緒になってしまいます。
基本的に何か間違ってます??

【47403】Re:罫線の判断
発言  たいやきの頭  - 07/3/9(金) 13:59 -

引用なし
パスワード
   僕はわかりやすく
Sub test()
Dim KEISEN_BOTTOM As Long
EISEN_BOTTOM = Cells(1, 1).Borders(xlEdgeBottom).LineStyle
If KEISEN_BOTTOM = xlLineStyleNone Then
   MsgBox "罫線を追加してください。", vbExclamation
   GoTo jump
Else
 UserForm3.Show
End If
jump:

End Sub
という感じでやってみたんですが、
ちゃんとできましたよ。

【47405】Re:罫線の判断
お礼  JIN  - 07/3/9(金) 14:07 -

引用なし
パスワード
   ▼たいやきの頭 さん:
>僕はわかりやすく
>Sub test()
>Dim KEISEN_BOTTOM As Long
>EISEN_BOTTOM = Cells(1, 1).Borders(xlEdgeBottom).LineStyle
>If KEISEN_BOTTOM = xlLineStyleNone Then
>   MsgBox "罫線を追加してください。", vbExclamation
>   GoTo jump
>Else
> UserForm3.Show
>End If
>jump:
>
>End Sub
>という感じでやってみたんですが、
>ちゃんとできましたよ。


大変申しわけありませんでした。
上記のプログラムならちゃんと動きましたです。
本当にありがとうございました。
また、お手数をおかけしました。

【47409】Re:罫線の判断
発言  ひげくま  - 07/3/9(金) 14:19 -

引用なし
パスワード
   ▼JIN さん:
>上記のプログラムならちゃんと動きましたです。

JINさんのプログラムがちゃんと動かない理由は解ったのでしょうか?

あと気になることが一つ。
If 条件式 Then
  条件式が真の場合の処理
Else
  条件式が偽の場合の処理
End If
においては、「条件式が真の場合の処理」が終わると、自動的にEnd If にジャンプすることになっているので、
「条件式が真の場合の処理」の最後にある、End If の直後へジャンプするためのGoToは必要ありませんよ。
あっても間違いではないのでしょうけど。

【47410】Re:罫線の判断
発言  Kein  - 07/3/9(金) 14:21 -

引用なし
パスワード
   >どちらも一緒になってしまいます。
それで合ってますよ。LineStyleNone は文字定数と言って
VBAでは「それと等価になる数値がセット」になっている
例がたくさんあります。例えば SpecialCells(xlCellTypeConstant)
は、SpecialCells(2) で置き換えることが出来ます。
LineStyleNone の場合は 0 だと勘違いしそうですが、実際は -4142
なのです。(中途半端な数値で意味不明ですけど・・)
だから判定文も

If KEISEN_BOTTOM = -4142 Then

としても構わないのです。逆に言うと LineStyleNone は文字ではなく
変数のように「数値を格納している値」ですから、数値との比較をしても
エラーになりませんが、文字列のような扱いをするとエラーになります。
>変数のように
正確には上の方で書いたように、定数です。

【47423】Re:罫線の判断
お礼  JIN  - 07/3/9(金) 15:53 -

引用なし
パスワード
   たくさんの回答ありがとうございます。

勉強になりましたです。

原因はよくわからないのですが、(トホホ・・・・)
うまく動いてしまいました、申しわけありません。

これに懲りずに今後もご教示おねがいいたします。

6063 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free