[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Me.の指定方法がわかりません…』(VBA迷走中)
タイトルの通りMe.の指定方法がいまいちよくわかっておらず迷走しております…
最終行の2~4つ下のセルの内容を切り取り、 refeditで指定した列の右から一つ(A:AならばA)を取り出し A1というものに変えてOffsetで場所を指定して貼り付けるというものです。
Dim j As Long, k As Long For j = 2 To 5 For k = 1 To 4
Cells(maxrow + j, 1).Select Selection.Cut Range(Right(Me.Userform("列指定" & j ).1) & "1").Offset(5, k).Select Selection.Paste
Next k Next j
この状態だと「メソッドまたはデータメンバーが見つかりません」となります。 「Me.U」が黄色く指定されたのでそこを改修し
Dim j As Long, k As Long For j = 2 To 5 For k = 1 To 4
Cells(maxrow + j, 1).Select Selection.Cut Range(Right(Me.Userform("列指定" & j ).1) & "1").Offset(5, k).Select Selection.Paste
Next k Next j
に変更してみると動いたのはいいのですが切り取り貼り付けがされませんでした。 どのようにすると切り取り貼り付けがされるようになるのでしょうか… どなたかご教示頂けると幸いです。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
Me.Userform("列... → Me.("列...
で大丈夫ですよ。
(TAKA) 2018/08/29(水) 13:13
>Me.の指定方法がわかりません…
Meキーワードはそのコードが書かれているオブジェクトを参照します。 ThisWorkbook Worksheet Form などのコードモジュールに書かれてる場合です。
Me.TestBox1 のMeはUserForm1(ユーザーフォームの名前がUserForm1の場合) Me.Range("A1") はWorksheets("Sheet1").Range("A1")
わかりますか?
Me.Userform はUserFormというコントロールがあればそのように書けますが.... (seiya) 2018/08/29(水) 13:14
簡単に確認するには MsgBox Me.Name でオブジェクト名が確認できます。 (seiya) 2018/08/29(水) 13:27
TAKAさん seiyaさん コメントありがとうございます。 Me.userformだと2重になってたんですね…ご教示頂きありがとうございます。 TAKAさんの通りにUserformを削除して作成すると コンパイル エラー: 修正候補:識別子 または 角かっこ([])で囲む必要がある名前が含まれています。 とエラー文が出てしまいました… これはどのように修正を行えばいいのでしょうか… (VBA迷走中) 2018/08/29(水) 14:43
カンマじゃないの?
Range(Right(Me("列指定" & j ),1) & "1").Offset(5, k).Select ^^^ (seiya) 2018/08/29(水) 14:51
Sub Macro2() Dim j As Long, k As Long For j = 2 To 5 For k = 1 To 4 Cells(maxrow + j, 1).Select Selection.Cut Range(Right(Me.UserForm("列指定" & j), 1) & "1").Offset(5, k).Select Selection.Paste Next k Next j End Sub
構文的に間違っているのは
Right(Me.Userform("列指定" & j ).1)
この部分です。
Right関数は Right(文字列 , 文字数)
というように、ピリオドではなくカンマで区切ります。
(TAKA) 2018/08/29(水) 14:55
Select → Selection は無駄な上に遅い上に画面がちらちらします。
ペンで書く でいいところを
ペンを持つ、持っているもので書く と書いているようなものです。
Sub Macro2() Dim j As Long, k As Long For j = 2 To 5 For k = 1 To 4 Cells(maxrow + j, 1).Cut Range(Right(Me.UserForm("列指定" & j), 1) & "1").Offset(5, k).Select Next k Next j End Sub
(TAKA) 2018/08/29(水) 15:04
TAKAさん seiyaさん すいませんカンマは完全に質問する時のこちら側のミスです。 ただ一度一から構文を組んだところエラー文が出ずに作成することが出来ました。 カンマの隣の空白が問題だったのではないかな…?と感じます。 おかげでスッキリしました…! 前までForNextを使わずに長ったらしい文だったので凄い見やすくなりました。 ありがとうございまいした。
追記 Select→Selectionではなくその方が見やすいですね…! マクロ記録で学んでたのが仇になってます… 修正します。ありがとうございます。 (VBA迷走中) 2018/08/29(水) 15:15
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.