コンボボックスのデータを行へ表示されるよう下記の通りやりました。
続けてテキストボックスを指定した同じ行のセルへ入力されるように
したいのですが、いろいろ調べたのですが、解決できず
ここで助言いただけたらと思います。
また
textbox1はA列
textbox2はB列
textbox3はM列
へとコンボボックスのデータを挟む形での入力となります。
ちなみにテキストボックスのプロジェクト名は変更してあります。

Private Sub CommandButton1_Click()
Dim lrow As Long, i As Long
With Worksheets("製品化")
lrow = .Range("F" & Rows.Count).End(xlUp).Row
For i = 0 To 6
   .Cells(lrow + 1, i + 6).Value = itemname.List(listno, i)
Next i
End With
End Sub

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>Next i


.Cells(lrow + 1 , "A").Value = textbox1.text
.Cells(lrow + 1 , "B").Value = textbox2.text
.Cells(lrow + 1 , "M").Value = textbox3.text
>End With

と言う感じの事?
    • good
    • 0
この回答へのお礼

すいません。
単純なことでした。
ありがとうございました。

お礼日時:2009/05/12 19:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【Excel】選択したすべてのセルを絶対参照にする方法

ExcelでF4を押せばセルを絶対参照に変えられますが、複数のセルを同時に絶対参照に変える方法を教えてください。

Aベストアンサー

こんばんは!
一例ですが・・・
Ctrlキーを押しながら、範囲指定(飛び飛びでも構いません)した後に
F4キーを押してみてください。
これでOKかと思います。m(__)m

Qコンボボックス or リストボックス (複数列表示→値の取得)

マクロ初心者です。(エクセル2003使用-ユーザーフォーム)
先日はお世話になり、ありがとうございました。
作成していくうちにさらに改良を加えたく、再質問させていただきます。

※コンボボックス内の表示を複数行表示(Sheet1の管理番号,品名,注文数量)し、そのデータをSheet2のセルA(管理番号),セルB(品名),セルC(注文数量)と貼り付けようとしております。
が、本で探したところ複数行表示のやり方がリストボックスでしかのっていなく、さらに自分で作成したマクロでは動きませんでした。
すみませんが、お力をお貸しください。

(Sheet1)
担当課客先管理番号品名注文数量出荷数量
A岡田さん1324りんご3020
B山田さん1554みかん25070
C岡田さん7634なし4025
B金子さん4653みかん7570
A金子さん6675りんご17060
C杉浦さん7789りんご200120

(↓こちらは、前回質問させていただいた内容です。)
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sheet1! C2:C" & Worksheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row ←ここを複数行用に変更するのでしょうか?いろいろ試したのですがダメでした。
ComboBox1.ListIndex = -1
ComboBox1.SetFocus
End Sub

Private Sub CommandButton1_Click()
Dim lRow As Long
With Worksheets("Sheet2")
lRow = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A" & lRow + 1).Value = ComboBox1.Value
End With
End Sub


(↓こちらは、リストボックスでのマクロですが、動きません)
Private Sub UserForm_Initialize()
With UserForm2.ListBox1
.ColumnWidths = "70;50;50"
.ColumnCount = 3
End With

With Worksheets("Sheet1")
Dim MyA As Variant
Dim i As Long
For i = 2 To UBound(MyA, 1)
.AddItem
.List(i - 2, 0) = Cells(i, 1).Value
.List(i - 2, 1) = Cells(i, 2).Value
.List(i - 2, 2) = Cells(i, 3).Value
Next
End With
End Sub

Private Sub CommandButton1_Click()
Dim lRow As Long
With Worksheets("Sheet2")
lRow = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A" & lRow + 1).Value = ListBox1.Value
End With
End Sub


教えていただけましたら幸いです。
よろしくお願いいたします。

マクロ初心者です。(エクセル2003使用-ユーザーフォーム)
先日はお世話になり、ありがとうございました。
作成していくうちにさらに改良を加えたく、再質問させていただきます。

※コンボボックス内の表示を複数行表示(Sheet1の管理番号,品名,注文数量)し、そのデータをSheet2のセルA(管理番号),セルB(品名),セルC(注文数量)と貼り付けようとしております。
が、本で探したところ複数行表示のやり方がリストボックスでしかのっていなく、さらに自分で作成したマクロでは動きませんでした。
す...続きを読む

Aベストアンサー

Private Sub UserForm_Initialize() からF8を押しながらステップ実行させていけば、どこでエラーになるか分かります。デバッグの基本なので覚えておくと良いでしょう。

ちなみに、ご提示されたコードでは
For i = 2 To UBound(MyA, 1)
でとまります。理由は、MyAが何も代入されないままUBoundに使われているためです。そもそもこのMyAがなぜ出てきたのか不思議ですが…。

また、ここを訂正してもそのあとの
.AddItem
でこけます。WithでくくられているのはWorksheets("Sheet1")ですが、ワークシートにAddItemメソッドはありません。当然ならがそのあとの.Listもすべて×。逆に、Cellsは「.」が抜けているのでSheet1ではなく表示しているシートを参照することになります。

.Range("A" & lRow + 1).Value = ListBox1.Value
についても、複数行のデータはValueでは取得できません。セットするときに List(#, #)=~ としたようにListプロパティでひとつずつ取得します。

> ←ここを複数行用に変更するのでしょうか?いろいろ試したのですがダメでした。

後半のコードと見比べてみましたか?
With UserForm2.ListBox1
.ColumnWidths = "70;50;50"
.ColumnCount = 3
End With
このようにリストボックスの各カラムの幅とカラム数を指定してます。前半のコードで複数行表示ができないのは、これをしていないためです。

以上を踏まえて修正したものです。

Private Sub UserForm_Initialize()
With ListBox1
.ColumnWidths = "70;50;50"
.ColumnCount = 3
.RowSource = "Sheet1!A2:C" & Worksheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row
End With
End Sub

Private Sub CommandButton1_Click()
Dim lRow As Long
With Worksheets("Sheet2")
lRow = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A" & lRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 0)
.Range("B" & lRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 1)
.Range("C" & lRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 2)
End With
End Sub

コンボボックスの場合は、フォームにComboBox1を設置し、コードのListBox1を全てComboBox1に置き換えてください。ただし、ドロップダウンリストは複数行で表示されますが、コンボボックス自体は複数行表示できないようなので担当課の値しか出てきません。

Private Sub UserForm_Initialize() からF8を押しながらステップ実行させていけば、どこでエラーになるか分かります。デバッグの基本なので覚えておくと良いでしょう。

ちなみに、ご提示されたコードでは
For i = 2 To UBound(MyA, 1)
でとまります。理由は、MyAが何も代入されないままUBoundに使われているためです。そもそもこのMyAがなぜ出てきたのか不思議ですが…。

また、ここを訂正してもそのあとの
.AddItem
でこけます。WithでくくられているのはWorksheets("Sheet1")ですが、ワークシートにAdd...続きを読む

Q別シートのセルを絶対参照にする

office2007、Excelで別シートのセルを絶対参照する方法を教えて下さい。
セルに「=シート名セル番地」を力した場合は、
セル番地を$で絶対参照にしても
参照先シートのその上に行を挿入すると
$A$5を指定していても行を挿入した場合は
自動的に$A$6になってしまいます。
別シートに行を挿入しても参照先のセルを固定する方法を教えて下さい。

Aベストアンサー

INDIRECT関数なら、文字列として範囲を指定できるので、行挿入や列挿入で勝手に指定範囲が変わることはありません。

例:
 INDIRECT(参照文字列,参照形式)
 と、使います。
 =INDIRECT("Sheet1!A1",TRUE)


※ INDIRECT関数の詳細は Excelのヘルプや解説サイトなどで確認してください。

QSubとEnd Subについて

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate URL
objIE.Visible = True

Do Until objIE.Busy = False
WScript.sleep(250)
Loop

If objIE.document.URL = URL Then
BodyText = objIE.document.body.innerTEXT
AriNashi = InStr(1, BodyText, "Yahoo")
If AriNashi > 0 Then
Set objINPUT = objIE.document.getElementsByTagName("input")
objINPUT(0).value = LoginID
objINPUT(1).value = Password
objINPUT(2).Click
Else
msgbox "NO"
End If
Else
WScript.Echo " ダ メ" & Err.Description
End If
Set objIE = Nothing

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate ...続きを読む

Aベストアンサー

Subで囲むとプロシージャとなります。
プロシージャは他から呼び出されない限り、勝手に動作はしません。

Sub Hoge
'実体
End Sub

と書いたなら、プロシージャの外で
Call Hoge()
のようにプロシージャを呼び出してあげてください。

Qexcel 割引率のセルを絶対参照した場合の式は?

下記で、D2の15%のセルを絶対参照にした場合、式はどのようにすればいいでしょうか。
例)
絶対参照にするセル D2 15%(割引率) 
          B4~B7 元値
          C4~C7 結果 
自分では・・・ 
C4=B4-B4*$D$2 で入力してみたのですが、他に式はありますか。

絶対参照にしない場合は、C4=B4*(1-0.15)でやってみました。
いずれも自信はありません。
よろしくお願いします。

Aベストアンサー

一例です。
小数点以下四捨五入、=ROUND(B4*(1-$D$2),0)
小数点以下切り上げ、=ROUNDUP(B4*(1-$D$2),0)
小数点以下切り捨て、=ROUNDDOWN(B4*(1-$D$2),0)

Qコンボボックスの選択肢にエクセルの列を呼び出す

質問させてください。
私はExcel2002、VB6.0を使用しています。
やりたいことは、

1、エクセルのA列内で記入されているセルをすべて検出
2、1で検出した文字をコンボボックスの選択肢に代入

以上となります。
基本的な操作かもしれませんが、いろいろ調べてみたのですがどうも見つからなくて困っています。
よろしくお願いします。

Aベストアンサー

For i = 1 To 100
If Sheets("Sheet1").Cells(i, 1).Value <> "" Then
ComboBox1.AddItem (Sheets("Sheet1").Cells(i, 1))
End If
Next

とりあえず、100行分。
空白だったら、抜けるという形も改造したらできます。

Qエクセルで複数のセルの絶対参照を一度に外す方法

宜しくお願いします。

複数のセルに例えば 

”$A3$*D3”

という式が入っていて、一度に

”A3*D3”

にする方法というのはあるのでしょうか?

私はいちいちセルをアクティブにして、F4キーで絶対参照を
外すというのを各セルごとに行っているのですが、
一度に置換か何かで”$A3$”を”A3”にすることは出来ないでしょうか

教えてください。
宜しくお願いします。

Aベストアンサー

解っているんでは、??。
編集⇒置換⇒検索する文字 $
置換する文字 (空白にして) カーソルをここに入れる(あわせるとも言う?) ⇒全て置換

これで、終わりです。

Qコンボボックスの複数列表示に関して

開発言語:Visual Basic 2008

現在、コンボボックスをフォーム上に作成し、そのコンボボックスにテーブルから取得した項目を表示させ、
選択させるような事を考えています。

その際に、コンボボックスに表示する内容として、例えば2つの列、

 コード、内容
 001、北海道
 002、青森

というように、コード、内容という2つの項目が存在し、内容だけでなく、コードも同時に表示させる事を検討しています。

インターネット等で検索した際に、そもそも2つの項目を1つのコンボボックスに表示させる事は難しく、仮に表示させたい
項目がテーブルに存在するのであれば、SQLで対応すればとの事が記載があった為に、以下のように対応しました。

《内容》

'SQL文作成
Select_SQL = "select 案件コード,案件名, CONCAT(CONCAT(案件コード,' :'),案件名) as fullname from T_案件"

'SQL文と接続情報を指定し、MySQLコマンドを作成
da = New MySqlDataAdapter(Select_SQL, Connection)

'DataAdapterを指定し、自動的に更新コマンドを生成するコマンドビルダーを作成
cb = New MySqlCommandBuilder(da)


'データセットの中に案件マスタ_Tというテーブルを作成し、そこへ格納する。
da.Fill(ds, "案件マスタ_T")


'コンボボックスに案件マスタ_Tを連結する
CMB_2.DataSource = ds.Tables("案件マスタ_T")
'コンボボックスに結合項目名を表示する
CMB_2.DisplayMember = "fullname"
'案件コードをSelectdValueで取得する
CMB_2.ValueMember = "案件名"

但し、この場合、仮にコードが3桁でなく2桁のものが混在してしまった場合、プルダウンの
表示としてガタガタな形(内容の表示が綺麗に左でそろわない)となってしまいます。

そこで、別の方法で、何かコンボボックスに複数列表示させ、なおかつ、項目の列幅が整列
するような方法はないでしょうか。。。

教えて下さい。

開発言語:Visual Basic 2008

現在、コンボボックスをフォーム上に作成し、そのコンボボックスにテーブルから取得した項目を表示させ、
選択させるような事を考えています。

その際に、コンボボックスに表示する内容として、例えば2つの列、

 コード、内容
 001、北海道
 002、青森

というように、コード、内容という2つの項目が存在し、内容だけでなく、コードも同時に表示させる事を検討しています。

インターネット等で検索した際に、そもそも2つの項目を1つのコンボボックスに表示させる事は難し...続きを読む

Aベストアンサー

最近 Oracle しかやってないのですぐには出てきませんが、
SQLServer 系は CONVERT LEN RIGHT とかかな?
文字列編集用の関数を組み合わせるだけでしょう。

> そもそも2つの項目を1つのコンボボックスに表示させる事は難しく、
1つの文字列として処理すれば、そうでもないけど?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  With Me.ComboBox1
    .Items.Add(New MyComboItem(1, "北海道"))
    .Items.Add(New MyComboItem(12, "青森"))
  End With
End Sub

Private Class MyComboItem
  Private _Code As Integer
  Private _Naiyou As String
  Private Sub New()
  End Sub
  Public Sub New(ByVal Code As Integer, ByVal Naiyou As String)
    Me._Code = Code
    Me._Naiyou = Naiyou
  End Sub
  Public Overrides Function ToString() As String
    Return Me._Code.ToString("0000") & ", " & Me._Naiyou
  End Function
End Class

最近 Oracle しかやってないのですぐには出てきませんが、
SQLServer 系は CONVERT LEN RIGHT とかかな?
文字列編集用の関数を組み合わせるだけでしょう。

> そもそも2つの項目を1つのコンボボックスに表示させる事は難しく、
1つの文字列として処理すれば、そうでもないけど?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  With Me.ComboBox1
    .Items.Add(New MyComboItem(1, "北海道"))
    .Items.Add(New MyComboItem(...続きを読む

Q多数のセルに入力してある数式を$を使わずに絶対参照コピーする方法

 初めて質問いたします。
 技術系計算をエクセルで組み立てる際、多数のセルに入力されている相当長い数式等を$を使用することなくコピーする方法を教えてください。
 以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 
 多数のセルを対象にしていますのでF4 キーによる変換では相当な時間がかかるので投稿しました。
 宜しくお願いいたします。

Aベストアンサー

こんばんは。

#3 の回答者ですが、#2さんのテクニックが上手く行かないということで、あえてそう書いたまでなのです。

>以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 

私は、何年も掲示板を読んでいますから、ほとんどは見ているつもりではいるものの、この種のご質問は難しいですね。私の知らないものもあるのかもしれませんが、現実に困っていない状況から、はっきりしていない記憶の中から、他人の独特のテクニックを導きだすからです。

以下の方法も定番とはいえません。

一旦、文字化させておいて、貼り付け、それを「区切り位置」ボタンで、一気に数式化させるというテクニックかもしれません。

具体的には、数式を置換で、「=」 --> 「'=」 と全体を全て置換します。そして、その範囲をコピーして、目的の場所に貼り付け、「区切り位置」で、「完了」をクリックします。
コピー元も同じく、「区切り位置」で元に戻します。ただし、これは一列に限ります。

他にも同種の特殊なテクニックもありますし、概ね、マクロ化も可能ですが、こういうことは、めったに必要ありません。実は、左側の数式は、右の数式と等価ですから、数式はひとつだけでよいわけです。

 A1方式  R1C1方式
--------------------------
=B1+C1   =RC[1]+RC[2]
=B2+C2   =RC[1]+RC[2]
=B3+C3   =RC[1]+RC[2]

こんばんは。

#3 の回答者ですが、#2さんのテクニックが上手く行かないということで、あえてそう書いたまでなのです。

>以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 

私は、何年も掲示板を読んでいますから、ほとんどは見ているつもりではいるものの、この種のご質問は難しいですね。私の知らないものもあるのか...続きを読む

Qリストボックスの内容をコンボボックスに

自動でリストボックスの内容をコンボボックスに表示させたいのですがどうすればよいのでしょうか?

環境は.netです。

Aベストアンサー

Combobox.Items.Add(ListBox.Items.Item(0))

をループさせるなりで。


人気Q&Aランキング

おすすめ情報