• 締切済み

エクセルのコード表示について・・・

(1) If Target.Column <> 4 Then Exit Sub Target.Offset(0, -2) = "1" (2) If Target.Column <> 35 Then Exit Sub Target.Offset(0, -2) = "2" (1)、(2)のコードを入力したのですが、セルには1としか表示されません。。 (2)の方を優先したい時は、どうすればいいのでしょうか???

みんなの回答

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

>コピーして使用したのですが、 >エラーを起こしてしまいます。。何故でしょうか?? >他のコードと一緒に使用しているからなのでしょう?? No.2の回答は、見やすく、判りやすくする為、コードの行頭の段落空けに全角スペースが使われてます。 何も考えずにコピペすると、行頭の全角スペースがエラーになります。 コピペしたら↓の「□」の位置にある全角スペースを取り除きましょう。 If Target.Column = 4 Then □Target.Offset(0, -2) = "1" Else □If Target.Column = 35 Then □□Target.Offset(0, -2) = "2" □End If End If

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

このコードでは変更されたのがD列以外の時はExit Subで処理を抜けますから、(2)のロジックは実行されません。 以下のようにIf文の入れ子にするか、Select Case文を使用されたら良いと思います。 If Target.Column = 4 Then  Target.Offset(0, -2) = "1" Else  If Target.Column = 35 Then   Target.Offset(0, -2) = "2"  End If End If

qtjgh105
質問者

補足

コピーして使用したのですが、 エラーを起こしてしまいます。。何故でしょうか?? 他のコードと一緒に使用しているからなのでしょう??

全文を見る
すると、全ての回答が全文表示されます。
  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.1

こんにちわ もっとも単純な方法として (2)、(1)の順番にするのはどうでしょう。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのコード表示についてですが。。

    Private Sub Worksheet_Change(ByVal Target As Range) (1)If Target.Column <> 4 Then Exit Sub Target.Offset(0, -3) = Now()   ⇒特定のセルに日時自動表示 (2)If Target.Column <> 4 Then Exit Sub  Target.Offset(0, 1) = "DUMMY"  ⇒特定のセルにDUMMYと自動表示 (3)If Target.Column = 4 Then  Target.Offset(0, -2) = "1"  Else             ⇒特定のセルに1と自動表示   (4)If Target.Column = 35 Then  Target.Offset(0, -2) = "2"  ⇒特定のセルに2と自動表示  End If  End If (5)If Target.Value = "T" Or Target.Value = "t" Then  Target.Value = "田中"    ⇒Tと入力すると田中と変換して表示  ElseIf Target.Value = "H" Or Target.Value = "h" Then  Target.Value = "林"     ⇒hと入力すると林と変換して表示  End If  End Sub 上のようなコードを入力すると(3)と(5)が機能しません。。なぜでしょうか??コードの表示がまずいのでしょうか??

  • エクセルのマクロコードについて

    エクセルのマクロコードに付いて教えて下さい。 下記のマクロコードがありますが、 Option Explicit ' Private Sub Worksheet_Change(ByVal Target As Range) '   Static Memo(1 To 3) As Long   Dim Cell As Range '   If Intersect([A1:C1], Target) Is Nothing Then     Exit Sub   End If '   For Each Cell In Target '     If Cell = "" Then       Memo(Cell.Column) = 0     End If   Next Cell   Set Cell = Target(1) '   If Not IsNumeric(Cell) Or Cell = "" Then     Exit Sub   End If '   Application.EnableEvents = False   Memo(Cell.Column) = Memo(Cell.Column) + Target   Target = Memo(Cell.Column)   Application.EnableEvents = True End Sub セル位置の指定を変更する場合は、どの様に書けば良いのですか? このコードですと、セルA1からc1の入力指定でなっていますが A1からAA1までとかにする場合やA1の結果を、A1ではなくA2に表示B1の結果をB2に表示する場合はどのように書くのでしょうか? マクロに付いて、殆ど知識が無いものですので 出来れば、分かり易い説明でお願いします。 宜しくお願いします。

  • エクセルのマクロコードについて

    お世話になります。 下記コードで、セルごとにクリアをすると、エラーなくうごくのですが、セルをまとめてセルを消すと実行時エラー13型が一致しません。とでてIf Target.Value = "" Thenがだめだよとでてしまいます。 どなたか、回避の方法をご教授ください。 宜しくお願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B2:E2,G2:J2")) Is Nothing Then Exit Sub If Target.Value = "" Then Exit Sub x = Target.Value With Application .ScreenUpdating = False .EnableEvents = False .Undo 'Range("B2").Value = x + Z Z = Target.Offset(1, 0).Value y = Target.Value Target.Value = x + y .EnableEvents = True .ScreenUpdating = True End With Target.Offset(1, 0).Value = x + Z End Sub

  • エクセルVBAについて

    エクセルVBAについて 下にある、1行目に入力された数値の、選択したセルの数値を、B5セルに表示させるマクロなのですが、1行目が結合していると、うまくB5セルに表示できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Count > 1 Then Exit Sub    '●複数セル選択は無視  If Target.Row <> 1 Then Exit Sub    '●1行目以外の選択は無視  If Target.Column > 6 Then Exit Sub   '●F列目以降の選択は無視  If Target.Value = "" Then Exit Sub   '●選択セルが未入力なら無視    Range("B5").Value = Target.Value End Sub このマクロで、結合しているセルをB5に表示させることはできますでしょうか? 1行目で選択するセルは、すべて2つのセルが結合しています。 よろしくお願いいたします。

  • セルの内容をテキストボックスに表示する

    こんにちは。今月からVBAを少しずつ勉強し始めている初心者です。 VBAでA列のセルをダブルクリックすると、そのセルにチェックが入り、 ユーザーフォームを起動させる。といったコードを記述しました。 チェックが入る→フォームが起動までは良いのですが、入力済みのセルをWクリックした時にフォームのテキストボックスににセルの内容を表示させようとしているのですがうまくいきません。不具合の内容は、フォームに表示されるデータが、前回Wクリックした行のデータが表示されます。例えば、 1回目 ID50を選択→表示されない。 2回目 ID70を選択→ID50が表示される。 3回目 ID90を選択→ID70が表示される。といった具合です。 コードは下記です。Targetが前回を参照しているのだと思って調べてみたのですがよく分かりません。すみませんがご教示お願いします。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim lngTop As Long, lngLeft As Long, strTitle As String Const RangeName As String = "領収書" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "レ" Then Target = "" Target.Offset(0, 9).ClearContents Else Target = "レ" End If End If If Target.Count <> 1 Then Exit Sub  If Target.Column <> 1 Then Exit Sub   If Target <> "レ" Then Exit Sub 入力F.Show With Worksheets("送付名簿") 入力F.TextBox1.Value = Target.Offset(0, 1).Value 入力F.TextBox3.Value = Target.Offset(0, 2).Value 入力F.TextBox4.Value = Target.Offset(0, 3).Value 入力F.TextBox5.Value = Target.Offset(0, 5).Value 入力F.TextBox6.Value = Target.Offset(0, 4).Value 入力F.TextBox7.Value = Target.Offset(0, 6).Value 入力F.TextBox10.Value = Target.Offset(0, 7).Value 入力F.TextBox9.Value = Target.Offset(0, 8).Value End With End Sub

  • マクロによる日時の表示

    こちらのページでお世話になり 以下のようなプログラムを使って 特定の行に入力があった場合となりのセルに入力時間が表示されるようにしたのですが、 通常は例としてA1に入力があった場合B1に入力時間が表示されるといった具合だったのですが、わけあってA1~A3を結合しなければならなくなってしまい、入力時間をB1~B3(同じく結合したセル)に表示したいのです。 同じマクロのままやってみたところ一応入力時間は表示されるのですが、A1~A3に入力したデータを消したときにエラーが出てデバックしますか?といった内容の表示が出てしまいます。 どこを変更するとエラーが出なくなるのでしょうか? ご存知のかたがいらっしゃいましたらどうぞご教授願います。よろしくお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) ' 1行目のセルならマクロ終了 If Target.Row = 1 Then Exit Sub ' A列かC列かE列なら If Target.Column = 2 Or Target.Column = 4 Or Target.Column = 6 Or Target.Column = 8 Or Target.Column = 10 Or Target.Column = 12 Or Target.Column = 15 Then '  内容がブランクなら隣のセルをブランクにする If Target.Value = "" Then Target.Offset(0, 1).Value = "" Else Target.Offset(0, 1).Value = Format(Date + Time, "yyyy/mm/dd hh:mm:ss") End If End If End Sub

  • エクセルコードについて

    エクセルコードについて Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   If Target.Row >= 1 And Target.Row <= 10 And Target.Column >= 1 And Target.Column <= 10 Then     If Target.Value = "○" Then       Target.Value = ""     Else       Target.Value = "○"     End If     Cancel = True   End If End Sub ではセルA1~J10ですが、これをA1~A10などに変更するのにはどのようにすればよろしいでしょうか。

  • (Excel 2003) 稀にマクロが期待通りに動作しません

    みなさん、こんにちは。 下記のコードは姓名のふりがなを表示するマクロですが、 稀にふりがなが漢字のまま表示されてしまう場合があります。 考えられる原因をご存知ありませんか? Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Column <> 8 And Target.Column <> 9 Then Exit Sub   Target.Phonetics.CharacterType = xlHiragana   If Target.Offset(, 2).Text = "" Then Target.Offset(, 2) = Target.Phonetic.Text End Sub よろしくお願いします。

  • マクロでの条件判断について

    A行に何かデータを入力した場合、同じ列のとなりの行のセルに入力時間を残したいと思い、 例 A1:あ B1:2006/5/9/16:00 A2:い B2:2006/5/10/18:00 以下のマクロを教えて頂いたのですが、 Private Sub Worksheet_Change(ByVal Target As Range) '///A列のセル以外ならマクロ終了/// If Target.Column <> 1 Then Exit Sub '///1行目のセルならマクロ終了/// If Target.Row = 1 Then Exit Sub '///内容がブランクならB列のセルをブランクにする。/// If Target.Value = "" Then Target.Offset(0, 1).Value = "" Else Target.Offset(0, 1).Value = Format(Date + Time, "yyyy/mm/dd hh:mm:ss") End If End Sub A列以外にもC列に入力した値の入力時間をD列にE列に入力した値の入力時間をF列にと、全部で6箇所値を入力したとなりのセルに入力時間が出るようにしたかったのですが、 '///A列のセル以外ならマクロ終了/// If Target.Column <> 1 Then Exit Sub の部分を '///A,C列のセル以外ならマクロ終了/// If Target.Column <> 1 Or Target.Column <> 3 Then Exit Sub のように変更してまずはA列とC列に値を入れて挑戦したのですが、時間が表示されなくこまっておりました。 解決方法をご存知のかたがいらっしゃいましたら、ぜひよろしくお願いいたします。

  • メッセージボックスを表示させるエクセルマクロ

    こんにちは。マクロ初心者です。 エクセル(Excel2003)でメッセージボックスを 表示させるマクロが思うようにいかず困っています。 B列に「○○会社」と入力されれば、 「取引先です。」 とメッセージボックスを表示させたいと思い、 次のとおりマクロを作成しました。 -------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 And Target Like "*会社" Then MsgBox "取引先です。" End If End Sub -------------------------------- しかし、コピーなどで複数のセルを貼り付ける(入力)行為をすると、 「実行エラー'13': 型が一致しません」と出てしまいます。 Worksheet_Change(ByVal Target As Range)を使っているので、 -------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column = 2 And Target Like "*会社" Then MsgBox "取引先です。" End If End Sub -------------------------------- と、「If Target.Count > 1 Then Exit Sub 」を入れれば、 メッセージは出なくなるのですが、 これだと、A列セルに、コピー&ペーストで複数セルを貼り付けた場合、 「○○会社」があっても、マクロが効いてきません。 複数セルの貼り付けにも対応させるには、 どのようにすればよろしいでしょうか? 基本的なところが理解できていないのだと自覚しておりますが、 どうかご教授願います。 長々とわかりづらい文章ですみません。よろしくお願いします。