Excel VBA質問箱 IV

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

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


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

【21857】input boxのつかいかた へるぴー 05/2/2(水) 12:19 質問[未読]
【21858】Re:input boxのつかいかた かみちゃん 05/2/2(水) 12:26 回答[未読]
【21859】Re:input boxのつかいかた へるぴー 05/2/2(水) 13:21 質問[未読]
【21866】Re:input boxのつかいかた IROC 05/2/2(水) 15:07 回答[未読]
【21869】Re:input boxのつかいかた へるぴー 05/2/2(水) 15:39 質問[未読]
【21876】Re:input boxのつかいかた IROC 05/2/2(水) 16:04 回答[未読]
【21877】Re:input boxのつかいかた りすりす 05/2/2(水) 16:21 発言[未読]
【21879】Re:input boxのつかいかた へるぴー 05/2/2(水) 16:31 質問[未読]
【21895】Re:input boxのつかいかた りすりす 05/2/3(木) 2:26 発言[未読]
【21896】Re:input boxのつかいかた かみちゃん 05/2/3(木) 7:01 回答[未読]
【21890】Re:input boxのつかいかた かみちゃん 05/2/2(水) 20:47 回答[未読]

【21857】input boxのつかいかた
質問  へるぴー  - 05/2/2(水) 12:19 -

引用なし
パスワード
   inputboxで値の入力して、その値でfindメソッドをつかいたいのですが、どう連携していいのかわかりません。

わかるかたいらっしゃいましたらご返答お願いします。

よろしくお願いします。

【21858】Re:input boxのつかいかた
回答  かみちゃん  - 05/2/2(水) 12:26 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>inputboxで値の入力して、その値でfindメソッドをつかいたいのですが、どう連携していいのかわかりません。

以下のような感じになるかと思います。
 strFind = InputBox("検索したい文字列は?")
 With Worksheets(1).Cells
  Set c = .Find(strFind, LookIn:=xlValues)
  '以下省略(Findメソッドのヘルプ参照)

【21859】Re:input boxのつかいかた
質問  へるぴー  - 05/2/2(水) 13:21 -

引用なし
パスワード
   かみちゃん さん
やっぱり、初心者の僕にはむりみたいです。
かみちゃんさんはどうやってVBAを覚えましたか?
なにかオススメの本とかありますか?

私のやりたいことは

表の中にある、管理番号という項目の番号を検索窓をつかって、それに該当データ(つまりその行丸ごと)を切り取りして、隣のシートに貼り付ける。

という事です。

なにかアドバイスいただけたら幸いです


よろしくお願いします。

【21866】Re:input boxのつかいかた
回答  IROC  - 05/2/2(水) 15:07 -

引用なし
パスワード
   >なにかアドバイスいただけたら幸いです

マクロの記録を使ってみましたか?

【21869】Re:input boxのつかいかた
質問  へるぴー  - 05/2/2(水) 15:39 -

引用なし
パスワード
   マクロの記録つかってなんの意味があるんですか?
結局、僕が自分で空欄を選択してるじゃないですか・・・
空欄をプログラムをつかって選択して、activesheetを貼り付けたいのです。

よろしくお願いします。

▼IROC さん:
>>なにかアドバイスいただけたら幸いです
>
>マクロの記録を使ってみましたか?

【21876】Re:input boxのつかいかた
回答  IROC  - 05/2/2(水) 16:04 -

引用なし
パスワード
   >マクロの記録つかってなんの意味があるんですか?
処理を部分的に考えて下さい。
マクロの記録で基本となるコードを書くのです。
マクロの記録でできる箇所と、
そうでない箇所(Inputbox)を組み合わせるのです。


>表の中にある、管理番号という項目の番号を検索窓をつかって、
検索→FINDメソッド
検索窓→Inputbox


>それに該当データ(つまりその行丸ごと)を切り取りして、
>隣のシートに貼り付ける。
ここもマクロの記録でできます。

【21877】Re:input boxのつかいかた
発言  りすりす  - 05/2/2(水) 16:21 -

引用なし
パスワード
   ▼へるぴー さん:
>かみちゃん さん
>やっぱり、初心者の僕にはむりみたいです。
>かみちゃんさんはどうやってVBAを覚えましたか?
>なにかオススメの本とかありますか?
>
>私のやりたいことは
>
>表の中にある、管理番号という項目の番号を検索窓をつかって、それに該当データ(つまりその行丸ごと)を切り取りして、隣のシートに貼り付ける。
具体的に書かないと
管理番号 列の 一致行を抜き取るのはわかりますが
隣のシートのどこの行のどこの列にいれるかわからないと 答えようがないでしょ。

1列目でいいの?
どこの行にいれるの?
 上から数えて最後の空欄?
 それとも決まったばしょ?

そこをかかないと いい返事もらえないよ

【21879】Re:input boxのつかいかた
質問  へるぴー  - 05/2/2(水) 16:31 -

引用なし
パスワード
   ▼りすりす さん:
>▼へるぴー さん:
>>かみちゃん さん

こんにちわ。


>具体的に書かないと
>管理番号 列の 一致行を抜き取るのはわかりますが
>隣のシートのどこの行のどこの列にいれるかわからないと 答えようがないでしょ。

の件ですが、
貼り付け先は上からみて、最初の空白行です。

説明不足で申し訳ございませんでした。

【21890】Re:input boxのつかいかた
回答  かみちゃん  - 05/2/2(水) 20:47 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>どうやってVBAを覚えましたか?
>なにかオススメの本とかありますか?

IROCさんもおっしゃっていますが、まずは「マクロの記録」です。
その次にヘルプ情報です。
あとは、ここの掲示板などの過去ログ、様々なWebに掲載されているTips(テクニ
ック集)やサンプルを試す。
だいたいこれくらいでできるようになります。
あとは、過去ログなど調べて、自分で試してみて、それでもわからなけれれば、掲
示板で聞くようにしています。

つまり、へるぴーさんが今どこまでできているのか、それを提示してみていただけ
ませんか?ほぼ正解のコードを提示するのは簡単ですが・・・

>マクロの記録つかってなんの意味があるんですか?
>結局、僕が自分で空欄を選択してるじゃないですか・・・

ここの部分をぜひ体験していただきたいと思います。
「空欄を選択してる」という意味もちょっとわかりません。

>表の中にある、管理番号という項目の番号を検索窓をつかって、それに該当データ(つまりその行丸ごと)を切り取りして、隣のシートに貼り付ける。

まずは、以下のことを「マクロの記録」で「記録」してみてください。
ここではまだInputBoxを使いません。

・「管理番号」の列に入力してある「番号」を検索するのは、「編集」−「検索」
 でできます。
・検索することによって見つかったセルの行全体を切り取ります。
・貼り付けたいシート(隣とは限らない)を選択します。
・そのシートの1行目(どの列かは知りませんが)の上から見て最初の空白行を
 Endキーを押して、↓キーを押してさらに↓キーをもう一度押すと最初の空白
 行に飛びます。

以上で、だいたいのコードは、できると思います。
がんばってみてください。

【21895】Re:input boxのつかいかた
発言  りすりす  - 05/2/3(木) 2:26 -

引用なし
パスワード
   Dim SourceSheet, 貼り付け先DestSheet As Worksheet
Dim c As Range
Dim Text As String
Dim i As Long
  
Text = InputBox("もしもし")
  
Set SourceSheet = Sheet1   ' 探すシートを指定
Set 貼り付け先DestSheet = Sheet2 ' 貼り付け先のシート

               ' ↓ここの列(A)で検索
  Set c = SourceSheet.Range("A2:A65536").Cells. _
   Find(What:=Text, LookIn:=xlValues, LookAt:=xlWhole, _
      SearchOrder:=xlByColumns, _
      SearchDirection:=xlNext, MatchCase:=False)
   If Not c Is Nothing Then
    
    For i = 1 To 65536
     If 貼り付け先DestSheet.Cells(i, 1) = "" Then
      SourceSheet.Range(SourceSheet.Cells(c.Row, 1).Address + ":" + _
         SourceSheet.Cells(c.Row, 256).Address).Copy
      SourceSheet.Paste Destination:=貼り付け先DestSheet.Range("A" & i)
      Exit For
     ElseIf i = 65536 Then
     MsgBox "もういっぱいで書き込めないや(-.-) " + CStr(i)
     End If
   Next
    
    Else
    MsgBox "そんなのないよん"
   End If

【21896】Re:input boxのつかいかた
回答  かみちゃん  - 05/2/3(木) 7:01 -

引用なし
パスワード
   こんにちは。かみちゃん です。

本当は、へるぴーさんがまずは「マクロの記録」を使って、どこまでできているの
かを見せていただきたかったのですが、りすりすさんからコードの提示がありまし
たので、それを元に私ならこうするというコードを提示しておきます。
コード中の変数名やメッセージなど、りすりすさん提示のコードをベースにさせて
いただいています。
ただ、CopyではなくCutでは?(「切り取り」と言っているので・・・)
「貼り付け先は上から見て」とは、「どの列の上から見て」かもはっきりしていませんが・・・

Option Explicit

Sub test()
 Dim SourceSheet, DestSheet As Worksheet
 Dim c As Range
 Dim Text As String
 
 Text = InputBox("もしもし")
 
 Set SourceSheet = Sheets("Sheet1")   ' 探すシートを指定
 Set DestSheet = Sheets("Sheet2") ' 貼り付け先のシート

               ' ↓ここの列(A)で検索
 Set c = SourceSheet.Columns(1).Cells. _
  Find(What:=Text, LookIn:=xlValues, LookAt:=xlWhole, _
     SearchOrder:=xlByColumns, _
     SearchDirection:=xlNext, MatchCase:=False)
 If Not c Is Nothing Then
  '該当データ(つまりその行(見つかったセルを含む行)丸ごと)を切り取る。
  Rows(c.Row).Cut
  '貼り付け先シートを選択
  DestSheet.Select
  '貼り付け先は上からみて、最初の空白行の1行上
  '(上から見て連続してデータの入っている最下端)
  'のセルがExcelの最大行より小さい場合
  '貼り付け先の上とは、ここでは、A列のことをさしているものとする。
  If Range("A1").End(xlDown).Row < Columns(1).Rows.Count Then
   '貼り付ける
   Range("A1").End(xlDown).Offset(1).Select
   ActiveSheet.Paste
  Else
   'Excelの最大行だった場合は、空白行はないのでエラーとする。
   MsgBox "もういっぱいで書き込めないや(-.-) "
  End If
  '探すシートに戻す
  SourceSheet.Select
  Application.CutCopyMode = False
 Else
  '該当データが見つからなかった場合
  MsgBox "そんなのないよん"
 End If
End Sub

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