ネットが遅くてイライラしてない!?

エクセルのマクロではビット演算ができましたが、アクセスではどのような方法があるのでしょうか?
where in 文で値の自動生成も考えられますが、VBやVCでアドインも可能でしょうか教えてください。

'*********** Excel VBA Bit 演算 ************
Private Sub Boln()

Dim MyBln As Boolean
Dim Object1 As Range
Dim Object2 As Range
Set Object1 = Range("B11")
Set Object2 = Range("B12")

MyBln = Object1 And Object2

MsgBox MyBln

End Sub
'*********** Excel VBA Bit 演算 ************

以上、宜しくお願いします。

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

A 回答 (2件)

こちらの解説ではいかがでしょ?かなり濃い内容です。


ビットマスクで今日からあなたも収納名人
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
    • good
    • 0
この回答へのお礼

有難う御座います。

アクセスではビット演算の参考資料が無く困っていました。

実行して確認します。

お礼日時:2011/09/05 17:03

ビット演算といってもビット単位の論理演算、


ビット単位のシフト演算がありますが、
VBAを使った演算はExcelもAccessも変わらないと
思います(Excelではほとんど使ったことことが
ないので)。
Accessでエンコードなどでシフト演算を行なう
場合は、論理演算とシフト演算が混じっても
ほとんどVB6での演算方法がそのまま使える
はずです。たとえば、左シフトの場合は
Cなどでは
  num<<no
ですが、VB6やVBAでは、
   num * 2^no
右シフト num>>no の場合は
   num \ 2^no
numは式として論理演算が入っている
場合もあります。
最近のVBはシフト演算子が使えますが。

サポート情報では、
http://support.microsoft.com/kb/96475/ja
のようなものもあります。また、
http://msdn.microsoft.com/ja-jp/library/b6ex274z …
    • good
    • 0
この回答へのお礼

有難うございました。
ご紹介していただいたページのmdlBitMaskに答えがありました。
とても参考になりました。

お礼日時:2011/09/07 09:51

このQ&Aに関連する人気のQ&A

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

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

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

Q2進数データのビット演算

vb.netにて
0と1からなる2進数で記録した2つの値をビット演算したいと思っております。
Convert.ToInt32("1111101000", 2) などを使って、一度数値に変換して演算すれば、計算可能なことはわかったのですが、計算に利用したいデータが2進数で1000桁ほどあります。桁数が多い場合、Convert.ToInt32ではエラーが出て実行できません。

無数に長い2進数のデータをビット演算するにはどうすればよろしいでしょうか。

ご存知の方、ご教授よろしくお願いいたします。

Aベストアンサー

ANo1です
ソースコードを書いてみました
これを参照してください
32桁分を取り出すのに、Mid関数でなく、SubStringメソッドを使用しています

以下、ソースコード

Dim strBitValue1 As String
Dim strBitValue2 As String
Dim strBitValueRes As String

' 計算を行うビットの文字列
strBitValue1 = "10000000111111111000001111111110001"
strBitValue2 = "10000000111111111000001000000110000"

Dim intVal1 As Integer
Dim intVal2 As Integer
Dim intValRes As Integer

Dim intLeng As Integer
Dim Idx As Integer
For Idx = 0 To strBitValue1.Length Step 32
  ' 取り出す桁数を決める
  intLeng = 32
  If ((strBitValue1.Length - Idx) < 32) Then
    intLeng = strBitValue1.Length - Idx
  End If

  ' 取り出した桁数を整数値に変換する
  intVal1 = Convert.ToInt32(strBitValue1.Substring(Idx, intLeng), 2)
  intVal2 = Convert.ToInt32(strBitValue2.Substring(Idx, intLeng), 2)

  ' ビット演算を行う
  intValRes = intVal1 And intVal2

  ' 計算結果を文字列にして連結する
  strBitValueRes = strBitValueRes & Convert.ToString(intValRes, 2).PadLeft(intLeng, "0")

Next

' 計算結果を表示する
Debug.WriteLine(strBitValueRes)

ANo1です
ソースコードを書いてみました
これを参照してください
32桁分を取り出すのに、Mid関数でなく、SubStringメソッドを使用しています

以下、ソースコード

Dim strBitValue1 As String
Dim strBitValue2 As String
Dim strBitValueRes As String

' 計算を行うビットの文字列
strBitValue1 = "10000000111111111000001111111110001"
strBitValue2 = "10000000111111111000001000000110000"

Dim intVal1 As Integer
Dim intVal2 As Integer
Dim intValRes As Integer

Dim intLeng As ...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Q16進数を10進数に変換する方法...

お初にお目にかかります(^^)
簡潔に質問しますm(_ _)m

バージョン:MS-Visual Basic6.0
質問内容:
16進数を10進数に変換する方法がわかりません。
Hex(Text1.Text) や Oct(Text1.Text) のような方法で
16進数・8進数に変換できるんですが…
10進数に変換する方法がわかりません。

P.S できれば、16進数→10進数、16進数や10進数→2進数
…に、変換する方法も、よろしければ教えてくださいませ
m(_ _)m

Aベストアンサー

16進数→10進数は

Dim StrHex As String
Dim intVal As Integer
StrHex = "1A"
intVal = Val("&H" & StrHex)

で出来ます。


申し訳ありませんが2進数への変換はよく分かりません。

QACCESSで、フォームのレコードごとに背景色変更

OS:Windows XP
Access Version: ACCESS 2000
ACCESSを利用して一日の時間外を計算するフォームを作成しています。
>   16 金 4:00
> 17 土 3:00
> 18 日 2:00
>  というような感じで時間を入力するのですが、曜日に特徴をつけて誤った入力をしないように、曜日が日曜日の時だけそのレコードの背景色を変更したいのです。よく、レポートで背景色を交互に変更するというやりかたをみてそれを行う方法はわかるのですが、それとおなじよなことをフォームでしたいのです。どうかお願いします!!ちなみにVBAはある程度わかりますのでVBAを利用した方法でもかまいません。

Aベストアンサー

帳票形式の場合ですが(多分データシートビューのフォームでも行けるとは思いますが)・・・
例えばですが、次のようにしてやると、できます。


(1)フォームヘッダー(もしくは詳細セクション)に、「txtID」という名前の
非連結テキストボックスを配置。「可視」プロパティは「いいえ」。
これには、真のIDフィールド(例えば連番フィールドや主キーフィールド)の値を
レコード移動時に転記します。(言わばダミーのテキストボックス)

(2)フォームのレコード移動時のイベントプロシージャを下記の様に
記述します。
サブフォームでやりたいなら、サブフォームのレコード移動時イベントに
記述します。

Private Sub Form_Current()

'真のIDフィールドの値を[txtId]へ代入。
  Me!txtID = Me!真のIDフィールドの名前(例えば連番フィールドや主キーフィールドと連結したテキストボックスの名前)

End Sub



(3)詳細セクション上にある、色変えしたいすべてのテキストボックスを一括選択して、
[書式][条件付き書式]で、条件付の書式設定をします。

条件(1)で、まず ドロップダウンリストから 「 式 」を選び、
その右の条件内容を

[txtID]=[フォームに配置した真のIDフィールドの名前(連結テキストボックス名)]

とします。

そして、背景色を白や透明以外に設定します。

以上

ダミーの非連結テキストボックスは、詳細セクションに置いてもOKですが、
その場合、速度を多少でもアップさせたいならフォームヘッダーに
配置する方がいいのかもしれません。(あんましかわらないかもしれないが)

※※
なお、もし選択した行だけを色変えしたい条件も同時に設定する場合は
カレントレコード色変えの条件を後に(条件(2)に)設定します。

【例】
条件(1)・・・「 式 」、[選択状態]=[選択フラグ] ←選択行だけを色変えする条件
条件(2)・・・「 式 」、[txtID]=[連番]


ただし、あまり色がつく行が増えると、フォームの
動作が遅くなるかもしれません。


お望みの機能でなかったらごめんなさい。

帳票形式の場合ですが(多分データシートビューのフォームでも行けるとは思いますが)・・・
例えばですが、次のようにしてやると、できます。


(1)フォームヘッダー(もしくは詳細セクション)に、「txtID」という名前の
非連結テキストボックスを配置。「可視」プロパティは「いいえ」。
これには、真のIDフィールド(例えば連番フィールドや主キーフィールド)の値を
レコード移動時に転記します。(言わばダミーのテキストボックス)

(2)フォームのレコード移動時のイベントプロシージャを下...続きを読む

QAccessの画面更新を一時的に停止する方法。

こんにちは。
Accessの画面更新を一時的に停止する方法を捜しています。
ExcelのScreenUpdatingと同様な機能です。

VBAでの更新処理時に画面がチラチラと動くのを防止したいと思っています。
(Ver:Access2000)
ご存知の方宜しくお願い致します。

Aベストアンサー

Application.Echo False '画面の描画を止める

・・・処理を実行する・・・

Application.Echo True '画面の描画を行う

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QAccess コンボボックスの複数選択

Access2007を勉強中の初心者です。

「空白のフォーム」から作成したコンボボックスで、複数選択が可能になるような設定はありませんか?

テーブル項目の「ルックアップ」「複数の値を許可」を許したテーブルから作成したフォームでは、コンボボックスで複数の値を選択可能になりますが、「空白のフォーム」から作成した場合にはできないのでしょうか。

リストボックスではスペースをとってしまう為、コンボボックスで行いたいです。

言葉足らずな内容かもしれませんし、大変お手数をおかけしますが、よろしくお願いいたします。

Aベストアンサー

リストボックスでは目的通りの動作をされているようですが、
そのリストボックスでGotForcusとLostFocusで縦のサイズ
を変えてやればどうでしょうか?

そうすれば使わないときにじゃまにはならないと思います。

ただ、テストはしていないので案だけですが・・

Q日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

Aベストアンサー

あとは、プログラムの書き方次第ですね、、、


If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QDAOとADOの違いについて

Accessからイントラネット上のデータベースに接続するための接続方法で困っています。
DAOとADOの違いが分からず困っています。
メリット、デメリットが分かる方、どうか教えてください。

宜しくお願い致します。

Aベストアンサー

DAO(データアクセスオブジェクト)はAccessで使用されるMicrosoftJetデータベースエンジン を公開した最初のオブジェクト指向インターフェイスです。DAOは単一システムのアプリケーションや小規模でローカルなネットワークで使用するのに最も適しています。
とMSDNライブラリでは説明しています。
DAOはJetデータベースエンジンを対象にして開発されているのでJetのもつセキュリティ機能・データ定義機能などを十分に操作することができます。
ADO(ActiveXDataObjects)ではオブジェクトの種類が簡素化されているためJetデータベースエンジンの細かな機能を制御することができないといった点が不足している部分がありますがADOXやJROの各オブジェクトモデルで使用できる機能を使えばADOで不足している機能をほとんど補うことができます。
DAOはデータベースにAccessを使用するアプリケーションの場合、最大のパフォーマンスを得ることができます。しかしアプリケーションを運用していくうちに規模が大きくなってデータベースをSQLServerに移行することがあるかもしれません。
そのような可能性が含まれているのであれば最初からADOで開発しておいたほうが無難です。ADOはSQLServerに対する処理で良いパフォーマンスを得ることができます。

Jetデータベースエンジンを主なターゲットにしているならDAOで可。それ以外のデータベースを利用するのであればADOを選択する方が良いのではと思います。

DAO(データアクセスオブジェクト)はAccessで使用されるMicrosoftJetデータベースエンジン を公開した最初のオブジェクト指向インターフェイスです。DAOは単一システムのアプリケーションや小規模でローカルなネットワークで使用するのに最も適しています。
とMSDNライブラリでは説明しています。
DAOはJetデータベースエンジンを対象にして開発されているのでJetのもつセキュリティ機能・データ定義機能などを十分に操作することができます。
ADO(ActiveXDataObjects)ではオブジェクトの種類が簡素化されて...続きを読む


人気Q&Aランキング