Excel VBA質問箱 IV

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

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


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

【12613】型が違いますとエラーになるのは? ぴぴ 04/4/9(金) 11:46 質問
【12617】Re:型が違いますとエラーになるのは? Jaka 04/4/9(金) 12:29 回答
【12620】Re:型が違いますとエラーになるのは? ぴぴ 04/4/9(金) 13:12 質問
【12624】Re:型が違いますとエラーになるのは? Jaka 04/4/9(金) 13:38 回答
【12626】Re:型が違いますとエラーになるのは? ぴぴ 04/4/9(金) 14:31 質問
【12627】Re:型が違いますとエラーになるのは? ぴかる 04/4/9(金) 14:40 発言
【12633】残念。 Jaka 04/4/9(金) 15:46 発言
【12635】Re:残念。 ぴかる 04/4/9(金) 15:54 発言
【12631】Re:型が違いますとエラーになるのは? Jaka 04/4/9(金) 15:42 回答
【12632】Re:型が違いますとエラーになるのは? ぴぴ 04/4/9(金) 15:45 発言
【12636】Re:型が違いますとエラーになるのは? Jaka 04/4/9(金) 15:59 質問
【12638】Re:型が違いますとエラーになるのは? ぴぴ 04/4/9(金) 16:16 発言
【12639】Re:型が違いますとエラーになるのは? Jaka 04/4/9(金) 16:46 回答
【12642】Re:型が違いますとエラーになるのは? ぴぴ 04/4/9(金) 16:58 質問
【12645】Re:型が違いますとエラーになるのは? Jaka 04/4/9(金) 17:16 回答
【12649】Re:型が違いますとエラーになるのは? ぴぴ 04/4/9(金) 17:38 お礼

【12613】型が違いますとエラーになるのは?
質問  ぴぴ  - 04/4/9(金) 11:46 -

引用なし
パスワード
   お恥ずかしい程の初心者ですが、お教え下さい。
E列の最後の値が0ならそのシートを削除し
0以外なら(マイナスでも)その値をE1へ転記したいのですが
エラーになります。
どのように直せばいいのでしょうか?

Sub test()

Dim a As String

 a = ActiveSheet.Range("E65536").End(xlUp).Value
 
 If a = 0 Then ←”型が違います”とエラーが出ます
  
  ActiveSheet.Delete
Else
ActiveSheet.Range("E1").Value = a
ActiveSheet.Range("A3:G200").Select
   Selection.SpecialCells(xlCellTypeConstants, 23).Select
   Selection.ClearContents
 
 End If
End Sub

【12617】Re:型が違いますとエラーになるのは?
回答  Jaka  - 04/4/9(金) 12:29 -

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

Dim a As String
 a = ActiveSheet.Range("E65536").End(xlUp).Value
 If a = "0" Then



Dim a As Long     '数字以外だとエラーになります。
 a = ActiveSheet.Range("E65536").End(xlUp).Value
 If a = 0 The

【12620】Re:型が違いますとエラーになるのは?
質問  ぴぴ  - 04/4/9(金) 13:12 -

引用なし
パスワード
   ▼Jaka さん:ありがとうございます
早速ありがとうございます。
"0"で実行はできたのですが、
0だった場合に、シートが削除されません。
何故なのでしょうか?

Sub test()

Dim a As String

 a = ActiveSheet.Range("E65536").End(xlUp).Value
 
 If a = "0" Then 
  
  ActiveSheet.Delete
Else
ActiveSheet.Range("E1").Value = a
ActiveSheet.Range("A3:G200").Select
   Selection.SpecialCells(xlCellTypeConstants, 23).Select
   Selection.ClearContents
 
 End If
End Sub

【12624】Re:型が違いますとエラーになるのは?
回答  Jaka  - 04/4/9(金) 13:38 -

引用なし
パスワード
   >0だった場合に、シートが削除されません。
って、言われても
ActiveSheet.Range("E65536").End(xlUp).address に0が入っていないからだとしか..。
他、削除時のアラートが出た時にキャンセルを選択しているとか。
o(オー)と間違えたりしていませんか?(私が良く間違えるので)

ActiveSheet.Range("E65536").End(xlUp).select
a = ActiveSheet.Range("E65536").End(xlUp).Value

として、a=・・・にブレークポイントを設けて見てください。

シート削除時のアラートを出したくない場合は、

Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True

【12626】Re:型が違いますとエラーになるのは?
質問  ぴぴ  - 04/4/9(金) 14:31 -

引用なし
パスワード
   Jaka さん 何度も失礼します。

やはり削除されません。

E列に数式が入っているからでしょうか?
その数式で計算された数字が0の場合そのシートを削除して、
0以外の場合は、E1に繰越金額として転記するようにしたいのですが・・

【12627】Re:型が違いますとエラーになるのは?
発言  ぴかる  - 04/4/9(金) 14:40 -

引用なし
パスワード
   Dim a にしてみたら?。OKかも?。
保証は、できへんです。

【12631】Re:型が違いますとエラーになるのは?
回答  Jaka  - 04/4/9(金) 15:42 -

引用なし
パスワード
   ▼ぴぴ さん:
>やはり削除されません。
>
>E列に数式が入っているからでしょうか?
みたいですね。色々考えて見たんですけどループして値を見ていく方法しか思いつきませんでした。

>その数式で計算された数字が0の場合そのシートを削除して、
固定したセルではないんですよね?

【12632】Re:型が違いますとエラーになるのは?
発言  ぴぴ  - 04/4/9(金) 15:45 -

引用なし
パスワード
   Jaka さん説明不足ですみません。

>固定したセルではないんですよね?
そうなんです。
数式はE3からE100まで入れてあります。

【12633】残念。
発言  Jaka  - 04/4/9(金) 15:46 -

引用なし
パスワード
   まるっきり外しています。

【12635】Re:残念。
発言  ぴかる  - 04/4/9(金) 15:54 -

引用なし
パスワード
   失礼しました。ポリポリ・・・。
状況を全く把握しておりません。もうちと確認していくようします。
しかし、情けないッ!。しばらくお休みします。

【12636】Re:型が違いますとエラーになるのは?
質問  Jaka  - 04/4/9(金) 15:59 -

引用なし
パスワード
   取合えず、E3からE100までの間という事は、検索範囲は固定で良いのですね?
Findで、下から検索する方法があったと思うんですが、今思い出せません。
ループ組んでも100行ぐらいだから、大した時間は掛からないとも思いますけど。

【12638】Re:型が違いますとエラーになるのは?
発言  ぴぴ  - 04/4/9(金) 16:16 -

引用なし
パスワード
   >取合えず、E3からE100までの間という事は、検索範囲は固定で良いのですね?
はい。固定です。
宜しくお願い致します。

【12639】Re:型が違いますとエラーになるのは?
回答  Jaka  - 04/4/9(金) 16:46 -

引用なし
パスワード
   ループだとこんな感じになるんですけど、こんなんで良いのでしょうか?

Sub ffgi()
  Dim i As Long
  For i = 100 To 2 Step -1
    If i = 2 Then
      MsgBox "最終行と思われるものが、ありませんでした。"
    ElseIf Cells(i, 5).Value <> "" Then
      MsgBox i & "行目が最後の行。"
      Exit For
    End If
  Next
End Sub

【12642】Re:型が違いますとエラーになるのは?
質問  ぴぴ  - 04/4/9(金) 16:58 -

引用なし
パスワード
   Jaka さんありがとうございます。
でも、教えて頂いたコードだと行番号しか取得出来ないのですが
どのように数式で計算された値を取得するのでしょうか?
初心者で、応用力もなくすみません。

【12645】Re:型が違いますとエラーになるのは?
回答  Jaka  - 04/4/9(金) 17:16 -

引用なし
パスワード
   ▼ぴぴ さん:
>でも、教えて頂いたコードだと行番号しか取得出来ないのですが
>どのように数式で計算された値を取得するのでしょうか?
>初心者で、応用力もなくすみません。

えっ、そうなの。

Sub ffgi()
  Dim i As Long
  For i = 100 To 2 Step -1
    If i = 2 Then
      MsgBox "最終行と思われるものが、ありませんでした。"
    ElseIf Cells(i, 5).Value <> "" Then
      MsgBox i & "行目が最後の行。"
     Msgbox "値は、" & Cells(i, 5).Value
      Exit For
    End If
  Next
End Sub

【12649】Re:型が違いますとエラーになるのは?
お礼  ぴぴ  - 04/4/9(金) 17:38 -

引用なし
パスワード
   Jaka さん ありがとうございました!
Cells(i, 5).Value
を変数に変えて修正をしたら、みごと!出来ました。
長い時間お手数をおかけしました。

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